【发布时间】:2020-07-31 09:17:02
【问题描述】:
需要关于什么是标准化下表的最佳方法的建议:
早些时候,我有一张桌子:
personId year dob column1 column2 column3
-------- ---- --- ------- ------- -------
这里,(personId+year) 是主键,dob、column1、column2 和 column3 列具有唯一值。
现在,根据新要求 column1、column2 和 column3 将存储多个值。在一个非常幼稚的意义上,它应该包含如下值:
personId year dob column1 column2 column3
-------- ---- ------ ------- ------- -------
1 2018 2.1.20 A1, A2 B1 C1, C2, C3
我只是不想在第一范式之前对其进行规范化,而是想将其分解为更多表格,例如:
表 1:
personId year dob
-------- ---- ------
1 2018 2.1.20
表 2:
personId year column1
-------- ---- ------
1 2018 A1
1 2018 A2
表 3:
personId year column2
-------- ---- ------
1 2018 B1
表 4:
personId year column3
-------- ---- ------
1 2018 C1
1 2018 C2
1 2018 C3
现在表 1 对我来说看起来不错,因为它的 PK 仍然是 (personId+year),但表 2-3 看起来不是很优雅,因为它们缺少主键。
有没有更好的方法来实现这一点?
【问题讨论】:
-
现在您只是要求我们使用定制教程重写教科书/手册。遵循已出版的有关信息建模、关系模型和数据库设计的学术教科书。 (用于记录和使用设计的语言和工具的手册不是这样的教科书。)(维基文章或网络帖子也不是。)在卡住的地方提出一个经过研究的特定非重复问题。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS这不清楚你想要什么。 “很好”、“看起来不太优雅”和"better" 没有任何意义。 “实现这个”-究竟是什么?
标签: sql database-design database-normalization