需要有关构建数据库的建议。所有在一个表或分裂?

时间:2010-12-31 06:47:23

标签: php mysql database database-design

我正在为一家房地产公司开发一个应用程序。我面临的问题是实现数据库。但是,我只是对采用哪种方式感到困惑,如果你能帮助我推理数据库的实现,我将不胜感激。

这是我的情况。

a)我必须将属性详细信息存储在数据库中。

b)该物业有大约4-5个类别,它们属于以下类别:同居,商业,工业等。

c)现在这些类别有子类别。例如。住宅类别将具有子类别,例如。公寓/独立住宅/别墅/农庄/一室公寓等,因此商业,工业或农业也有同样的子类别。

d)每个子类别必须存储不同的值。像居民一样会有卧室/厨房/大厅/浴室等功能。这些功能取决于子类别。

有关我如何实现我的应用程序的示例,您可以查看此站点。

http://www.magicbricks.com/bricks/postProperty.html

我可能会想到这样的解决方案。

a)根据将要存在的类别创建四到五个表(问题是类别可能在将来增加)。

b)为所有功能,位置,价格,描述创建不同的表,并将公共属性表合并为一个。例如,所有属性都将具有公共实体,例如位置,总面积等。

鉴于目前的情况,你会给我什么建议。

谢谢

3 个答案:

答案 0 :(得分:2)

为了正确实现这一点,您需要了解(读取)有关数据库规范化的信息。 每个实体都需要自己的表。您将拥有以下表格:

  • 对象(房地产对象)
  • 类别
  • transactionTypes
  • ......等。

如果您有分层类别,严格按树结构组织,您可能希望将其实现为树结构,所有这些都存储在一个表中。如果存在重叠的可能性,则意味着您需要为每个表设置不同的表,例如:

  • propertyTypes
  • propertyRatings
  • propertyAvailability
  • ......等。

答案 1 :(得分:0)

一般情况下,每个属性“type”都有一个表,其中包含“type”特定信息,但也有一个相应的“common”表,其中包含所有类型之间的公共字段,如“price”,“address”等。 ...

这就是MLS数据的结构。

答案 2 :(得分:0)

属性类别是gen-spec设计模式的另一个例子。

有关gen-spec here is the link的先前讨论。