mysql关系,让它们可选吗?

时间:2013-01-21 16:07:39

标签: mysql database database-design polymorphic-associations erd

您好我有以下mysql关系,

enter image description here

正如您所看到的,公司表与成员表具有1:n的关系。然而,这似乎是隐含的,这意味着当我尝试将成员保存到我的数据库时,他们必须与公司关联,否则它们不会发生插入。

基本上,我们的用户注册过程的架构是您可以是个人或作为公司签名。如何使我的数据库设计反映出这一点,因此两个表之间的关系不是必须的。

2 个答案:

答案 0 :(得分:2)

这不是一个很棒的设计。

您应该阅读Party ModelTable Inheritance以查看经久耐用的设计。骨架:

PARTY
id

ORGANIZATION : PARTY
name
doing_business_as

INDIVIDUAL : PARTY
first_name
last_name

PARTY_RELATIONSHIP
from_party_id references party(id)
to_party_id references party(id)
from_date
to_date

ORGANIZATION_CONTACT_RELATIONSHIP : PARTY_RELATIONSHIP

答案 1 :(得分:0)

我认为您的架构与实际业务领域之间存在矛盾。如果某些用户与业务无关,则存在0:n关系,而不是1:n关系。

在实践中,我已经看到了几种建模方法。当然,最简单的不是创建外键关系 - 这就是业务领域似乎建议的内容(个人用户与公司无关)。

如果“业务”和“个人”客户之间存在实质性差异,您可以将不同列分解为单独的表 - 因此您可能拥有“用户”和业务信息所在的“business_users”(包括链接到companies_id)和“individual_users”,其中包含个人数据。

相关问题