我有一种情况,我需要在我的数据库中存储多个值,但它们是大约的。同样的类型,所以现在我不知道是否更快地将这些值存储为字符串,在MySQL中的VARCHAR字段中以逗号分隔
1,2,3,4,5
然后把它们炸开,我需要它们
$values = explode(",", $stringFromDatabase);
其中$stringFromDatabase是来自mysql_query +的String,并使用$values、$values1等一个接一个地得到它们。
或
为每个变量添加另一列(最大值)。(7行),然后调用特定行的数据库,只需使用标准的mysql_query +mysql_query过程的列单独获取它们?
那么,一列与逗号或多列连在一起?需要注意的是,我总是需要它们(当然是一个一个地),排序并不重要--所以我认为first选项是更好的还是更快的?
发布于 2011-03-19 10:04:16
多列更好。没有多值列是数据库规范化的一部分。
在您的情况下-如果您需要从多值3
中选择“1,2,3,4,5
”,怎么办?这将是相当有挑战性的。但是使用多列,我可以轻松地执行SELECT * FROM Table Where Column3 = 3
。
发布于 2011-03-19 10:05:11
数据库的一般经验法则是列应该是原子的。换句话说,它们应该代表一条信息,而只代表一条信息。将CSV列表塞进一列会打破这一原则,并且会使你的生活在长期内变得更加艰难,特别是在对你存储的数据进行分析的时候。我建议每个值有一列是最好的选择。
发布于 2011-03-19 10:06:30
对每个值使用单独的列。请参阅1NF
https://stackoverflow.com/questions/5363804
复制相似问题