多种ID类型的最佳做法是什么? -标准化问题

时间:2019-07-08 02:37:22

标签: database-normalization erd

如果我具有三种类型的ID,例如员工ID,客户ID,供应商ID,它们都具有一组属性。我应该将它们放在同一张桌子中还是有更好的方法来组织它们?我可以仅将主键“ ID”命名为包括您全部吗? -这是公认的做法吗?我了解到,通常主键和外键应保持相同的名称,所以也许不允许这样做?

1 个答案:

答案 0 :(得分:0)

我要说的是,如果它们都具有相同的属性,那么它们都将属于同一表中的通用ID列下。

例如,一个person表:

  • id
  • 名称
  • 类型(employeecustomersupplier

这将使您可以使用类似的查询每个单独的类型:

SELECT * FROM person WHERE type = customer

如果每种ID类型都有唯一的信息,则可以通过将其链接到另一个表来表示属性。例如,假设employee具有一些更详细的附加信息(例如manager)。 employee manager都位于同一个通用表中,您将创建一个'bridging table' (or 'associative entity')来将它们链接在一起:

employee_manager桥接表:

  • employee_id
  • manager_id

这样,您可以通过以下方式找到属于某个经理的所有员工:

SELECT * FROM employee_manager WHERE manager_id = 1

然后根据您希望检索的信息类型,使用person将它们交叉引用到JOIN表中。