2010-06-04 64 views
0

我想爲我的數據庫使用SET數據類型。以便該類型的字段可以包含來自該數據類型的一個或多個值。與數據庫中的SET等效的數據類型?

但我有以下兩個問題:

Q1。 SET在數據庫中用作數據類型是否正確?我認爲它不支持所有的數據庫。 Q2302。如果SET不是一個好的選擇,那麼我可以用什麼來代替SET

回答

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的原則,當您嘗試從「集合」中提取特定項目時會導致問題。最好將每個值分成自己的行,這意味着改變你的表格設計。提供有關您要存儲的數據的更多信息,我可以爲您推薦一個表格結構。

+0

我的字段是'LicenseType',它可以包含來自'2W,LMV,HMV'的多個值 – 2010-06-05 04:43:21