标志VS加入DB

时间:2014-08-14 08:21:14

标签: sql database join database-design

如果在数据库中,我们有一个父表和两个子表。是否更好地使用连接来获取子项或添加标记来区分它们?

例如,父表是Person [Person_Name,Person_ID]。第一个子表是Employee [Person_ID,Employee_ID,Department],另一个子表是Customer [Person_ID,Location,Rank]。

那么,将flag [isEmployee]或[isCustomer]添加到父表(Person)是否是件好事并节省了在“person_Id”上加入表的工作量?

另一种情况是一个孩子,例如,父表是成员[Member_Name,Member_ID]和子表GoldenMember [Member_ID,Phone_Number,EMail]。

现在在这种情况下,如果我想显示特定成员的信息,我需要在表之间进行连接以查看它是否为Golden Memmber,但是如果表中有“isGolden”标志(会员)它会为我们节省一次加入吗?

那么,哪个更好,为什么?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

除非您提供衡量“善”的标准,否则没有“更好”。

SQL对实体子类型的支持是不够的。你可以解决任何缺点,但每个黑客只会引入自己的新问题。

顶层的其他“类型”列引入了数据库更新变得更加复杂的问题。有缺陷的更新过程将破坏数据库的完整性。

在顶层省略额外的“类型”列将使得制定读取查询的问题变得更加复杂(尤其是更多的连接)。许多人会在这里添加“并降低性能”,但是你不太可能从中明显受到

选择在您的特定用例中最容易使用的难度。