数据类型等效于数据库中的SET?

时间:2010-06-04 11:10:28

标签: database types set

我想为我的数据库使用SET数据类型。因此,该类型的字段可以包含该数据类型中的一个或多个值。

但我有以下两个问题:

Q1。 SET在数据库中用作数据类型是否正确?我认为并非所有数据库都支持它。

Q2。如果SET不是一个好的选择,那么我可以使用哪些代替SET

1 个答案:

答案 0 :(得分:0)

您应该使用带有外键的表:

YourTable
col1 ...
col2 ...
YourTypeCol  char(1) FK to YourTypeTable
col4 ...

YourTypeTable
YourTypeCol             char(1) PK  <<make the data type fix your "set"
YourTypeColDescription  string

例如,你有这样的数据:

CarTable
CarID      int PK auto number
CarMaker   int FK
CarBuilt   date
....

CarID  CarMaker  CarBuilt
1      1         1/10/2005
2      4         3/18/2004
3      3         10/31/2009
...

CarMakerTable
CarMake      int PK
CarMakeName  string

CarMake    CarMakeName
1          Ford
2          GM
3          Honda
4          Mazda
...  

至于So that a field of that type can contain one or more values from that data type我不推荐这个。最佳做法是每个“字段”仅存储一个值。在单个字段中存储多个值违反了Database normalization的原则,并且当您尝试将特定项目从“集合”中拉出时会导致出现问题。最好将每个值拆分为自己的行,这意味着更改表设计。提供有关您要存储的数据的更多信息,我可以为您推荐一个表格结构。