对于与同一个表具有1对1关系的多个表,最佳数据库设计是什么?

时间:2010-03-01 21:15:21

标签: database-design

例如,我有三个表,用于存储具有不同数据的不同类型的用户。但现在我想存储他们的联系信息。存储其联系信息的表适用于存储所有用户表的数据。

问题是我在不同的用户表之间有不同或可能重复的ID,因此无法创建与我的联系人表的关系。一种解决方案是为每种用户类型创建一个联系表,但这似乎很浪费,因为唯一的区别就是ID。

另外,我考虑将联系人ID存储在用户表中,但这似乎不太理想,因为我们可能没有用户联系信息,直到以后,如果有的话。

我缺少的其他选项?

3 个答案:

答案 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