Mysql 数据库方案设计查询
我正在设计一个数据库,将用于一个网站用于交换汽车 汽车具有不同的属性和姿态类型,如 “多媒体”、“安全”等类型的属性 例如防抱死制动系统,气囊,尤其是其它 我想以1和0组合的形式将所有这些属性保存在一个cloumn中 像 1001000101Mysql 数据库方案设计查询,mysql,database-design,Mysql,Database Design,我正在设计一个数据库,将用于一个网站用于交换汽车 汽车具有不同的属性和姿态类型,如 “多媒体”、“安全”等类型的属性 例如防抱死制动系统,气囊,尤其是其它 我想以1和0组合的形式将所有这些属性保存在一个cloumn中 像 1001000101 但我的问题是,如果我更改属性名在数据库中的位置,那么这个组合“1001000101”将如何更新?或者哪种方法应该是最好的方法。将所有标志放在一个列中,会比将它们作为单独的布尔属性的可维护性带来什么好处 如果您的标志集相当稳定,我建议您至少从将它们建模为单个
但我的问题是,如果我更改属性名在数据库中的位置,那么这个组合“1001000101”将如何更新?或者哪种方法应该是最好的方法。将所有标志放在一个列中,会比将它们作为单独的布尔属性的可维护性带来什么好处
如果您的标志集相当稳定,我建议您至少从将它们建模为单个布尔列开始,这将更易于管理。如果可以提供一些其他可测量的好处,那么以后管理它们会变得更复杂。如果您想这样做,并将属性保存在一个数据字段中,更改关系“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;
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
UPDATE yourtable SET backupfield = yourfield;
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
是否有任何原因需要这样做?如果没有具体原因,请使用单独的字段(更简单)。除非您不必处理严重的性能问题,否则不应取消数据库的规范化 几年前,我在一个主要的二手车市场工作,我们添加了一个文本列,其中包含汽车设备项目的分隔id值
、1,3,7,55、
,以及在搜索查询中使用的“%”、55、%”等设备
然而,我们总是保持我们的标准化数据模型与汽车和设备之间的关系
car_id equip_id
1 3
1 55
保持设备
列和车载设备
关系同步可以由DAL或数据库触发器处理
请始终记住,除了为前端市场提供服务外,您可能还需要为其他目的提供报告-如果您的所有设备/属性数据都编码在一列中,如果没有DAL构建的逻辑就无法查询,那么您就完蛋了。MySQL是一项要求吗?我认为,现代NoSQL数据库可以在这方面提供帮助。例如,MongoDBe、 为什么不使用多个列?有没有这样做的原因?@Martin Woe将这些建模属性转换为列!为将来添加的每个属性更改数据模型甚至比反规范化还要糟糕。