2013-08-31 92 views

回答

2

正確的數據類型是一個表。您應該可以每行存儲一個值。

通常,這將是關聯表,因爲該組值將被分配給某個實體。喜歡的東西:

create table EntityNumbers (
    EntityNumberId int auto_increment primary key, 
    EntityId int references Entities(EntityId), 
    Number int 
); 

然後,如果你想返回列表,使用group_concat()

select EntityId, group_concat(Number) 
from EntityNumbers 
group by EntityId; 
1

MySQL有沒有這樣的數據類型。您可以用來在單個字段中存儲多個值的唯一數據類型是Set數據類型,它只存儲字符串。

在關係數據庫中,針對此問題的通常的解決方案是一個額外的表,具有一個外鍵原始表,其可以具有多個行,即在原始表中的每一行。

所以不是

id | name | values 
1 | foo | 7,8,9 

你會

id | name 
1 | foo 

id | foreign_key | value 
1 | 1   | 7 
2 | 1   | 8 
3 | 1   | 9 

,並使用選擇它們

SELECT value from original_table join additional_table ON (id == foreign_key) 
    WHERE original_table.id == 1 

這導致3個結果行。

0
tinyint() stores 1 byte 
smallint() stores 2 bytes 
mediumint() stores 3 bytes 
int() stores 4 bytes 
+0

...和'bigint'是8個字節,但這些事實與問題無關。 –

相關問題