我正在设计一个数据库,将用于交换汽车使用的网站。
汽车有不同的属性和类型,比如
“多媒体”、“安全”等类型的属性,例如ABS、Airbages、ESP等
我希望将所有这些属性以1和0组合的形式保存在一个云中
喜欢
1001000101
但我的问题是,如果我改变了数据库中属性名称的位置,这个组合"1001000101“将如何更新?或者哪种方式应该是最好的方式。
发布于 2012-01-13 19:24:43
将所有标志放入一个单独的列中会带来什么好处,而不是将它们作为单独的布尔值属性进行维护?
如果您的标志集相当稳定,我建议您至少从将它们建模为单独的布尔列开始,这样管理起来会简单得多。如果它会提供其他一些可测量的好处,那么以后管理它们就会变得更加复杂。
发布于 2012-01-13 19:26:26
尝试使用bit data type (请参阅storage requirements -似乎是更合理和更简单的解决方案
发布于 2012-01-13 19:36:50
如果您想这样做,并将属性保存在一个数据字段中,则更改位置的关系"attribute“必须导致数据的管理性更新。由于数据库不知道该关系,因此没有简单的方法来自动执行此更新。
每次发生这样的事件时,您都必须这样做。
基于这种表的理论:
CREATE TABLE `yourtable` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`yourfield` varchar(16) DEFAULT NULL,
`backupfield` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) 这可能看起来像这样:
UPDATE yourtable SET backupfield = yourfield;如果将位置3与7互换,则可能如下所示:
UPDATE yourtable
SET yourfield = CONCAT(
LEFT(backupfield,2), // everything left of first position
MID(backupfield,7,1), // old position 7
MID(backupfield,4,3), // everything between first and 2nd position
MID(backupfield,3,1), // old position 3
MID(backupfield,8)); // everything right of 2nd position你有什么理由要这样做吗?如果没有具体的原因,可以使用单独的字段(方法更简单)。
https://stackoverflow.com/questions/8849759
复制相似问题