2011-03-02 133 views
0

我有一张房产列表。我需要在这些列表中添加城市。将城市列表分为自己的表格是否是最佳做法?数据库表格设计

我想添加一个新的属性,以便能够从城市列表中选择用户。

顺便说一句,这是一个Rails项目。

回答

2

在这种情况下,城市查找表是有意义的。

如果需要,这也将允许您在未来为每个城市添加更多信息。

0

是的。标准化数据库模式通常是一种最佳做法,这样您就不会在属性列表中的多个房产列表记录中重复相同的城市名称。

有些情况下,您会因性能原因想要进行非规范化处理。在证明它本身不变的情况下,我不会认为你的情况是这种情况之一(即表读取变得非常缓慢)。即使如此,在对模式进行非规范化之前,仍然可以进行优化。

+2

把城市放在自己的桌子上与正常化没有任何关系。不这样做与反规范化无关。这并不一定会使事情正确或错误 - 但你应该清楚理由是什么。没有迹象表明OP的模式尚未正常化。 – sqlvogel 2011-03-02 17:23:29

+0

@dportas诚然,如果我的回答包含了规范化和非规范化模式的例子,我的回答会更好地服务于这个问题,表明我认为他在问他应该使用哪一个。 – 2011-03-03 19:14:06

2

如果每个属性只有一个城市,将其放入属性表中并没有什么大错。如果还有更多,则除了使用城市表格外,没有什么好的选择。

或者,如果您想从下拉列表中选择城市并且不允许添加任何内容,则拥有城市列表可能是个好主意。如果你这样做,那么你可能希望将cityid而不是城市名称存储在属性表中。这样当有人改变一个城市的名字(这可能不会经常发生),你只需要改变一个记录。当然,如果你有一个城市表,你必须有一个外键,并确保city_id在属性表中编入索引,以保持数据的完整性。

+0

谢谢。这帮助了很多 – hanumanDev 2011-03-02 23:40:51