首页 > 解决方案 > 同一列中具有多个数据的 SQL 数据库设计

问题描述

我想创建一个包含多个信息的数据库表。这些信息之一是电话。我如何创建一个数据库表,该表在电话列中将包含比方说子列,因为用户可能拥有多个电话并存储在同一行的同一 ID 中。

下面是我的意思以及我希望我的桌子如何的图像...... 在此处输入图像描述

所有的答案都很有帮助不幸的是我只能选择一个但所有的答案都对我有帮助

标签: sqldatabasedatabase-designforeign-keyscreate-table

解决方案


关系数据库中没有子列的概念

如果要为每个用户存储可变数量的电话,一种解决方案是创建另一个表以将它们存储为rows。该phones表应该有一个列来存储与每个电话相关的用户的 id,并具有一个外键约束,以确保该列中包含的值确实存在于users表中。

所以:

users(id, name, address)
phones(id, user_id, phone_no)

典型的 DDL(MySQL 语法)

create table users (
    id int primary key auto_increment,
    name varchar(50) not null,
    address varchar(50)
);

create table phones(
     id int primary key auto_increment,
     user_id int not null,
     phone_no varchar(20) not null,
     foreign key (user_id) references users(id)
);

推荐阅读