基于类型的数据库关系一对一

时间:2016-09-22 12:32:10

标签: database-design

我有以下表格:

  • 用户:Id,TypeId ..
  • 类型:Id,名称..

根据类型,用户具有1到3个值。例如,用户1是典型的B,而类型B总是有3个值。类型A总是有2个值。我是否创建了不同的值表

  • ValuesA:Id,Min-value,Max-value,UserId
  • ValuesB:Id,Value1,Value2,Value3,UserId ...

并使用UserId作为外键,并根据类型决定我应该使用哪个表。或者,我是否创建一个包含所有值字段的值表,并在某些行中保留空字段,并将ValueId添加到users表中?或者这是一个更好的方法吗?

1 个答案:

答案 0 :(得分:0)

更好的方法是normalize您的值行。

Value
-----
User ID
Type ID
Sequence
Value

此表的主键是(用户ID,类型ID,序列)。 Sequence列是使主键唯一的原因。对于类型A,序列将为1和2.对于类型B,序列将为1,2和3。

此设计允许您灵活地为给定用户和类型设置零值,5个值或150个值。