如果我具有三种类型的ID,例如员工ID,客户ID,供应商ID,它们都具有一组属性。我应该将它们放在同一张桌子中还是有更好的方法来组织它们?我可以仅将主键“ ID”命名为包括您全部吗? -这是公认的做法吗?我了解到,通常主键和外键应保持相同的名称,所以也许不允许这样做?
答案 0 :(得分:0)
我要说的是,如果它们都具有相同的属性,那么它们都将属于同一表中的通用ID
列下。
例如,一个person
表:
employee
,customer
,supplier
)这将使您可以使用类似的查询每个单独的类型:
SELECT * FROM person WHERE type = customer
如果每种ID类型都有唯一的信息,则可以通过将其链接到另一个表来表示属性。例如,假设employee
具有一些更详细的附加信息(例如manager
)。 employee
和 manager
都位于同一个通用表中,您将创建一个'bridging table' (or 'associative entity')来将它们链接在一起:
employee_manager
桥接表:
这样,您可以通过以下方式找到属于某个经理的所有员工:
SELECT * FROM employee_manager WHERE manager_id = 1
然后根据您希望检索的信息类型,使用person
将它们交叉引用到JOIN
表中。