哦,我写过的每一个应用程序都遇到过这个问题。我想要一个最终的共识答案!
这是在数据库中存储联系人方法或任何其他数据的最规范/有效/正确的方式吗?
Contact { PK ContactId, ... }
ContactContactMethod {PK FK ContactId, PK FK ContactMethodId, Key, Comments }
AddressContactMethod {PK FK ContactMethodId, Line1, Line2, City, State, Zip }
EmailContactMethod {PK FK ContactMethodId, EmailAddress }
InstantMessengerContactMethod {PK FK ContactMethodId, IMClient, IMAddress }
PhoneContactMethod {PK FK ContactMethodId, ... }
WebsiteContactMethod {PK FK ContactMethodId, ... }
OtherContactMethod {PK FK ContactMethodId, ... }
我应该考虑ContactMethodData
在ContactContactMethod
桌子上使用 Xml 字段吗?
AddressContactMethod、EmailContactMethod 等都具有相同的主键唯一性,这让人感觉有些不对劲。
还考虑了联系人数据的键值对,但这比 Xml 字段更难查询。
(设计指南:每个联系人可能有一个以上的每种联系方式或没有,每个联系人都有一个非唯一的“键”,如“家、工作、红色汽车等”和评论,但类型之间没有其他共享数据元素)