1

我目前正在开发一个需要创建数据库的开发项目(我将使用 Postgre)。
该数据库的一部分必须为每个公司以及每个用户存储电话簿。这两种“类型”的电话簿存储在两个表中,尽管它们包含相同类型的信息:

PersonalPhoneBook(IdOwner, IdUser) 
  //Ids of the owner and a user he's in contact with.

CompanyPhoneBook(IdCompany, IdUser)
  //Ids of the company and a user it's in contact with

将通过以下请求检索个人电话簿:

SELECT * F
ROM User 
WHERE IdUser IN 
  (SELECT IdUser FROM PersonalPhoneBook WHERE IdOwner = x);

(这个请求没有优化,但你明白了要点)。

我还应该提到,由于这三个表,每个用户和公司都拥有他们想要的尽可能多的详细信息(电话号码、地址……):

ContactDetail(IdContactDetail, LbContactDetail, ValueContactDetail)

Company_ContactDetail(IdCompany, IdContactDetail)

User_ContactDetail(IdUser, IdContactDetail)

现在,我在该模型中没有考虑到一些事情:用户和公司希望在他们的电话簿中包括一些不是数据库用户的人。

所以我一直在探索几种解决方案,我需要建议来确定哪个是最好的:

  • 制作另外两个表来存储这些“局外人”的固定数量的详细信息(2 个电话号码,1 个地址)。

  • 让所有“局外人”用户(但我发现将它们存储在一起非常难看)

  • 为每个公司和每个用户存储一个独立的电话簿(LDAP 类型)(然后复制数据)

  • 保留公司和用户的详细联系信息系统,并为其他人使用 LDAP 系统

  • 其他...?

4

0 回答 0