2013-08-31 56 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个字节,但这些事实与问题无关。 –

相关问题