正确的数据库建模方法

时间:2013-05-30 08:16:38

标签: sql database database-design relational-database

我无法找到创建数据库的最佳解决方案。我有3个实体:餐厅,供应商和SubSupplier。 每个餐厅都可以向任何供应商订购。如果供应商有子供应商,则餐馆直接向其中一个SubSupplier订购,但必须知道父供应商以获取信息。

目前我有:

Restaurant (idRestaurant,nameRestaurant,otherStuff,...);
Supplier (idSupplier,nameSupplier,address, phone, ...);
SubSupplier (idSubSupplier, #idSupplier, nameSubSupplier, address, phone,...) ;

但供应商和子供应商具有完全相同的属性(如20),只是SubSupplier链接到父供应商。

我真的不知道如何正确地做到这一点,因为供应商和SubSupliers几乎有一切共同点,我觉得重复创建2个区别表。

这是一个很好的解决方案吗?什么是最好的?

3 个答案:

答案 0 :(得分:1)

子供应商仍然是供应商,因此您不应为其创建新表。您需要的是建立两个供应商之间的父/子关系的第三个表。 “子供应商”是供应商的子女。例如:

Restaurant (idRestaurant,nameRestaurant,otherStuff,...);
Supplier (idSupplier,nameSupplier,address, phone, ...);
SupplierChild (idParentSupplier, idChildSupplier)

答案 1 :(得分:0)

为什么不为供应商和子供应商提供一张表;与可空的部分“兔子耳朵”的关系。在订购时,它只是一个左边的连接来找到父节点(如果有的话)。

答案 2 :(得分:0)

您可能希望向供应商添加一个列(超级供应商),并向供应商提供引用ID(外键)的供应商,因此,如果您告知供应商谁是其超级供应商并且价值是null,那么它是一个普通的供应商。