sql - 同一列中具有多个数据的 SQL 数据库设计
问题描述
我想创建一个包含多个信息的数据库表。这些信息之一是电话。我如何创建一个数据库表,该表在电话列中将包含比方说子列,因为用户可能拥有多个电话并存储在同一行的同一 ID 中。
所有的答案都很有帮助不幸的是我只能选择一个但所有的答案都对我有帮助
解决方案
关系数据库中没有子列的概念。
如果要为每个用户存储可变数量的电话,一种解决方案是创建另一个表以将它们存储为rows。该phones
表应该有一个列来存储与每个电话相关的用户的 id,并具有一个外键约束,以确保该列中包含的值确实存在于users
表中。
所以:
users(id, name, address)
phones(id, user_id, phone_no)
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)
);
推荐阅读
- css - 带有“动画:破折号 5s 线性交替无限”的 svg 路径动画;不仅在 Firefox 中工作
- javascript - 如何在不同的设备上呈现相同的图片?
- python - 2个向量场的张量点
- winapi - 打印对话框中的打印机图标
- javascript - 如何根据 redux store 导出不同的内容来响应组件?
- python - DJANGO - profile.user 的反向访问器与同一字段的反向访问器冲突?
- android - 如何解决“致命:不明确的参数'HEAD~1':未知修订或路径不在工作树中”?
- neo4j - 如何使用 popoto.js 迭代扩展节点(点击时)?
- javascript - Bootstrap popover 在 *ngIf 内以角度失败
- reactjs - 如何从数组中获取图片的路径?