如何在我的sql数据库中存储一对多的关系?(MySQL的)

Wea*_*ked 15 mysql sql database join relational-database

我正在建立一个网站,我需要在我的数据库中存储随机数量的数据.

例如:用户john可能有一个电话号码,其中jack可以有3个.

我需要能够为每个用户存储无限数量的值.

我无法在任何地方找到这样做,希望你能帮助我!:)

我是关系数据库的新手.

Bjö*_*örn 31

您为电话号码创建一个单独的表(即1:M关系).

create table `users` (
  `id` int unsigned not null auto_increment,
  `name` varchar(100) not null,
  primary key(`id`)
);

create table `phone_numbers` (
  `id` int unsigned not null auto_increment,
  `user_id` int unsigned not null,
  `phone_number` varchar(25) not null,
  index pn_user_index(`user_id`),
  foreign key (`user_id`) references users(`id`) on delete cascade,
  primary key(`id`)
);
Run Code Online (Sandbox Code Playgroud)

现在,您可以轻松地通过简单的连接获得用户电话号码;

select
  pn.`phone_number`
from
  `users` as u,
  `phone_numbers` as pn
where
  u.`name`='John'
  and
  pn.`user_id`=u.`id`
Run Code Online (Sandbox Code Playgroud)

  • 关于第二张表,phone_numbers.id字段是否必要?我可以正确地执行更新“ user_id ='12345'和phone_number ='123-456-7890'`的phone_numbers吗,但是我试图理解为什么需要phone_numbers.id字段。谢谢! (2认同)