例如,我有三个表,用于存储具有不同数据的不同类型的用户。但现在我想存储他们的联系信息。存储其联系信息的表适用于存储所有用户表的数据。
问题是我在不同的用户表之间有不同或可能重复的ID,因此无法创建与我的联系人表的关系。一种解决方案是为每种用户类型创建一个联系表,但这似乎很浪费,因为唯一的区别就是ID。
另外,我考虑将联系人ID存储在用户表中,但这似乎不太理想,因为我们可能没有用户联系信息,直到以后,如果有的话。
我缺少的其他选项?
答案 0 :(得分:5)
这就是我要做的事情:
table Users
UserID -PK auto number
UserLogin
UserName
table UserSpecialType1
UserSpecialType1ID -PK auto number
UserID -FK
SpecialInfoA
SpecialInfoB
table UserSpecialType2
UserSpecialType2ID -PK auto number
UserID -FK
SpecialInfoC
SpecialInfoD
table UserContactInfo
UserContactInfoID -PK auto number
UserID -FK
EmailAddress
PhoneNumber
Address
答案 1 :(得分:1)
在我的脑海中,我会将所有用户放入同一个表中,并使用Type区分器。
TABLE User
Id
Value1
Value2
UserTypeCode
TABLE UserType
TypeCode
TABLE Contact
UserId
ContactInfo
TABLE UserTypeAttribute
UserType
AttributeTypeCode
TABLE AttributeType
AttributeTypeCode
TABLE UserAttributeTypeValue
UserId
AttributeTypeCode
Value
答案 2 :(得分:0)
您可以在联系人表格中使用复合键,例如UserTypeID,UserId