实体之间存在多重关系没有限制。有时一个实体存在多个自引用关系。 但是在您的特定领域中,员工和客户是否共享相同的概念?它们在概念上是否在某种抽象层次上共享相同的概念?
也许您可以创建一个 Account 实体,以及另外两个实体,StaffAccount 和 ClientAccount,它们都与 Account 实体具有 IS-A 关系。 然后,当您实现数据库和创建表时,您可以决定天气创建具有一个表或多个表的这三个实体。
同一张表之间可能有多个关系。这是有道理的 如果关系意味着不同的事情。在这里,您可能有
staff_id
告诉工作人员中谁正在处理订单,而 customer_id
告诉谁已经订购并应支付和接收订单。
这对于鱼尾纹 ERD 表示法可能看起来很奇怪,因为它们看起来多余。然而,这不是致命的:
department_id
和available
似乎只与员工相关,与客户无关。另一方面,对于客户,我还希望有送货地址和账单地址。
如果只有很少的几个字段只与客户或员工相关,那么让这些字段可以为空并确保以一致的方式填写它们将是完全有效的。这称为“单表继承”(将两种不同类型的实体视为一个实体)。
但是,客户不是账户,员工也不是。所以你不应该引入继承(“IS-A”关系)。客户和员工都有一个帐户。因此,强烈建议引入两个独立的表格
STAFF
和 CUSTOMER
,并将 order
与这些表格中的每一个相关联。 Account
也指 staff_id
和 customer_id
(由您决定两者对于应用程序帐户是否互斥)。这将增加关注点的分离。这是未来的证明(例如,公司客户可能允许同一家公司的多个帐户)
不相关:永远不要存储
password
。相反考虑一个password_hash
:这增加了员工和客户的安全;-)