【发布时间】:2021-07-05 11:27:27
【问题描述】:
我可能有一个老生常谈的问题,但我需要一个建议。
我在一个中心的 DBMS 工作,那里有两种不同类型的客户:我们称他们为 customerOrdinary 和 customerSpecial。
当然,它们有共同的属性,例如姓名、姓氏、出生日期…… 然后 customerSpecial 具有 customerOrdinary 没有的属性,反之亦然。
customerSpecial 和 customerOrdinary 然后连接到不同的表:customerOrdinary 连接到 table1,customerSpecial 连接到 table2 和 table3
此时,我知道,我有两种不同的方法:
方式 1:
创建具有所有公共属性的单个表“customer”,然后创建具有相同 PK 和其他列的另外两个表 customerS 和 customerO。
CUSTOMER
ID DATEOFBIRTH. NAME. SURNAME. TYPE
01. 1989/07/12. Sal. Dallow. S
02. 1987/09/12. Kreb. Krusty. O
03. 1999/01/02. Josh. Milly. S
CustomerO
ID. NumberOfCr. .....
02. 18273. .....
Customer S
ID. DateAsmp. DateEnd. TypeCon
01. 2020/12/12. 2021/10/07. STN
03. 2020/11/22. 2020/12/30. PLS
方式 2
直接创建 2 个不同且单独的表 CustomerO 和 CustomerS:
CustomerS
ID DATEOFBIRTH. NAME. SURNAME. DateAsmp. DateEnd. TypeCon
01. 1989/07/12. Sal. Dallow. 2020/12/12. 2021/10/07. STN
03. 1999/01/02. Josh. Milly. 2020/11/22. 2020/12/30. PLS
CustomerO
ID DATEOFBIRTH. NAME. SURNAME. NumberOfCr.
02. 1987/09/12. Kreb. Krusty. 18273.
您认为我应该采用哪种方法?为什么?最重要的是,第一种方法在某种程度上是不正确的?
【问题讨论】:
-
两种不同类型的客户这可以准确地告诉您您拥有/需要支持的内容。
-
@SM或者你认为哪个更好?
-
我删除了 sql-server,因为它与 mysql 冲突,并且 SQL Workbench 是 MySQL IDE,而不是 SQL Server。
标签: mysql sql database-design