提问者:小点点

sql workbench上的独立表而不是单个表


我可能有个老生常谈的问题,但我需要一个建议。

我正在为一个中心的DBMS工作,在那里有两种不同类型的客户:让我们称它们为Customer普通和CustomerSpecial。

当然,他们有共同的属性,比如名字,姓氏,出生日期...然后customerSpecial具有Customer普通没有的属性,反之亦然。

然后,customerSpecial和customerSpecial连接到不同的表:customerSpecial连接到table1,而customerSpecial连接到table2和table3

在这一点上,知道了这一点,我有两种可能的方法:

方式一:

创建具有所有公共属性的单个表“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

直接创建两个不同的独立表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.

你认为我应该遵循哪种方法?为什么?最重要的是,第一种方法在某种程度上是不正确的?


共1个答案

匿名用户

这个问题取决于您是否需要与“客户”的外键关系。我猜答案是“是的”。

这表明第一种方法更好。如果“普通”和“特殊”客户不需要外键关系,可以考虑将所有列存储在同一表中--而不必担心null值。