我有一个表格,其中包含有关特定对象的信息,说项目并且有列
ItemID,ItemName,price, ItemListingType ..... LastOrderDate
其中一项信息 ItemListingType 可能是10种不同类型之一 如:
私人,政府,非政府,商业......等(字符串),未来可以扩展到更多类型。
我是否应该使用表 ITEM 中的列,还是应该使用具有两列的单独表并将外键放在Item表中以引用该列(一对多关系)?像:
ListingTypeID int
ListingTypeName varchar(MAX)
编辑:列的值有多少,您可以考虑使用另一个表
2,4或什么?
由于
答案 0 :(得分:8)
使用单独的表来存储此类参考数据。这是规范化的原则,并且还可以实现更轻松的缓存,因为您将只读和读写数据分开。我的两分钱......
答案 1 :(得分:3)
答案 2 :(得分:2)
我肯定会选择“查找”样式列;这样,当未来添加到允许的列表类型列表时,您就不会感到难过。您还可以减少冗余并更容易更改特定类型的列表(如果“gov”更改为“政府机构”,那么您只需在一个地方更改它)。
答案 3 :(得分:2)
您应该使用包含ListingTypes的第二个表并使用Objects对象链接到该表的id ...
答案 4 :(得分:1)
在这样的情况下,我问自己: 该项可以具有未确定数量的列表类型吗?如果是,请使用不同的表格。
规格是否说永远不会超过3种?要看。有时候,我仍会选择单独的桌子,有时候不会。一段时间后你会对此感到满意。
项目是否总是有一个列表类型?如果是,则表,单列。
现在更进一步。 如果一个Item有零个或多个列表类型并且这些列表类型实际上是共享的(换句话说,两个项可以具有相同的列表类型,那么我们有3个表:Items,ListingTypes和一个交叉引用表来支持多对多关系。
答案 5 :(得分:0)
很明显,你应该使用一个额外的表,因为你不会有这样的重复。它还允许您在一个位置更改此列表的值。但是,如果您非常确定不会添加任何类型,请保留该列。