你好我有以下mysql关系,
如您所见,company 表与 members 表具有 1:n 关系。然而,这似乎是隐含的,这意味着当我尝试将成员保存到我的数据库时,他们必须与公司相关联,否则不会发生插入。
基本上,我们用户注册流程的架构是您可以是个人,也可以作为公司注册。我如何让我的数据库设计反映这一点,所以两个表之间的关系不是必须的。
你好我有以下mysql关系,
如您所见,company 表与 members 表具有 1:n 关系。然而,这似乎是隐含的,这意味着当我尝试将成员保存到我的数据库时,他们必须与公司相关联,否则不会发生插入。
基本上,我们用户注册流程的架构是您可以是个人,也可以作为公司注册。我如何让我的数据库设计反映这一点,所以两个表之间的关系不是必须的。
这不是一个伟大的设计。
您应该阅读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
我认为您的架构与实际业务领域之间存在矛盾。如果某些用户与企业没有关联,则存在 0:n 关系,而不是 1:n 关系。
在实践中,我已经看到了几种建模方法。当然,最简单的方法是不创建外键关系——这就是业务领域的建议(个人用户与公司无关)。
如果“企业”和“个人”客户之间存在显着差异,您可以将不同的列分解为单独的表 - 因此您可能有“用户”和“企业用户”,企业信息所在的位置(包括公司 ID 的链接),以及个人数据所在的“individual_users”。