请原谅我缺乏知识。我正在创建一个php/mysql网站,将存储各种汽车的广告记录。每个广告记录将包含一个汽车型号和汽车制造数据,以及描述,价格等…
在我的创建广告表单上,我有2个选择字段来查找汽车制造商和模型,从表中包含所有制造商的id和汽车制造商,以及所有型号的id,汽车制造商和汽车型号。
我的问题是,当我在广告创建表单上选择数据时,最好是获取id和汽车制造商,然后将"id“存储在我的广告表中,还是应该将实际的"car make”和"car model“存储在我的数据库中的广告表中?
我假设仅仅是id会更快地用于搜索目的,然后当我查找要显示的数据时,我将需要获取id并在汽车制造商和型号表上进行连接,以显示汽车制造商和型号描述。
这会对性能有更大的改善吗?或者,这与将汽车制造商和型号存储在每个广告记录中没有什么不同,这样我就不需要在以后显示它们时进行连接了?
发布于 2012-02-18 00:55:13
您正在谈论的是数据库模式(反)规范化。我强烈建议在获取数据时存储I并进行连接。然后,当你有了大量的流量后,你可以开始考虑去规范化你的模式(例如,包括“内联”的东西……出于性能原因)。
发布于 2012-02-18 00:54:05
想一想人们会如何使用这个网站。可能会有一种方法让用户按品牌或型号进行搜索。因此,信息规范化是很重要的。让人们在创建列表时键入'Chevy‘,而其他人键入'Chevrolet’,这将导致各种问题。最好有一个包含该信息的Makes
表,并在您的广告表中有一个外部makes_id字段。
发布于 2012-02-18 00:55:06
存储ID。抛开性能不谈,这为您的数据提供了适当的规范化。
考虑制造商将名称从"Datsun“更改为”Nissan“的情况。通过存储ID,您只需在查找表中的一个位置进行更改。如果您存储了名称,则必须更新包含“Datsun”的每个广告行。
https://stackoverflow.com/questions/9332209
复制相似问题