您好我有以下mysql关系,
正如您所看到的,公司表与成员表具有1:n的关系。然而,这似乎是隐含的,这意味着当我尝试将成员保存到我的数据库时,他们必须与公司关联,否则它们不会发生插入。
基本上,我们的用户注册过程的架构是您可以是个人或作为公司签名。如何使我的数据库设计反映出这一点,因此两个表之间的关系不是必须的。
答案 0 :(得分:2)
这不是一个很棒的设计。
您应该阅读Party Model和Table 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”,其中包含个人数据。