我可能做错了,但现在好了。
我正在努力构建像非常基本的CRM这样的东西。我知道它们很多,但我想要实际学到一些东西。我试图为这个特定场景找到现成的例子,但我发现的只是理论和简单的例子,我不能使用。
我可以使这个图更简单,但在这种情况下,我将有空单元格,所以基本上我在循环中用这个:)
要求:
以前从未联系过一些公司。这就是为什么我创建了两个额外的表格contact_emails
,company_emails
,contact_phones
,company_phones
。
联系公司可能已指定联系人(人)。
人可以有手机和电子邮件。
可以将一个人分配到多个公司
一家公司可以有多人
图:
]
问题:
答案 0 :(得分:0)
你没有做错......太多了。 ;)
您在设计中没有实现您可以将一个人分配到多个公司的要求。要包含此内容,请从联系人中删除company_id
并添加:
company_contacts (company_id PK/FK, contact_id PK/FK)
在contact_phones
中,我会将company_phones_id
列重命名为phone_id
,以与设计其余部分中使用的命名约定保持一致。
除了通过联系人,公司只能拥有一部电话和电子邮件是否正确?如果没有,请检查companies
和company_emails
/ company_phones
之间关系的基数指标。如果它是正确的,您可以(我不应该说)用公司中的company_emails
和company_phones
列替换email_id
和phone_id
表。
除了这些问题,架构看起来还可以接受。
我可能会考虑进一步调整。为公司和联系人添加超类型(我们可以称之为聚会)将允许您组合company_phones
和contact_phones
表,以及company_emails
和contact_emails
表:
parties (id PK)
contacts (party_id PK/FK, name, surname)
companies (party_id PK/FK, company_name, ...)
party_phones (party_id PK/FK, phone_id PK/FK)
party_emails (party_id PK/FK, email_id PK/FK)
但是,在这种情况下,您无法为数据库中的公司和联系电话/电子邮件强制执行不同的基数。