电话簿和数据库:什么是最好的选择?

时间:2012-05-03 07:59:23

标签: sql database ldap

我目前正在开发一个我需要建立数据库的开发项目(我将使用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系统

  • 其他...?

0 个答案:

没有答案