为房地产 php 应用程序设计数据库,表中的列太多

Design database for a real estate php app, tables have too many columns

我正在为一个 php 应用程序设计 mysql 数据库,它有两个部分:为房屋商店等物业添加广告......,并搜索它们。

我有 table users, addresses, ads...

问题是propertiestable。我不知道我应该把它分成多个 table 还是应该有一个大的 table?列太多了。我最多有 100 个字段,例如:

属性类型:house, shop, fields...每个属性类型都有一些字段,例如房屋的卧室数量,以及其他字段,例如空调系统,设施,设备.. 我应该怎么办?我应该把这个 table 分成更小的 table 吗?

我建议 properties table、features table 和 property_features table.

您的 properties table 将包含主要信息 - 地址、房源所有者等

您的 features table 将是一个 table,其中每一行都是一个可能的特征 - air_conditioningroomsbathrooms , gold_plated_toilets, 等等

您的 property_features table 将是 property_idfeature_id 和一个可选的 value 字段(可以是 true/false air_conditioning 的值,或者类似 rooms 的值可能是数字计数)。

我建议使用 bridge table。您可以在此 Link 上看到桥 table 是什么。

通常,您有 2 个选择,它们都是架构设计:

  1. 仅使用一个 table(名为 property)并向其添加批量数据。在这种情况下,字段是您的特征(例如 air_conditioning、卧室号码等)。通过将这些字段定义为布尔值并将 "The property has this feature" 表示为 1,"The property has NOT this feature" 表示为 0,您可以做您想做的事。

  2. 使用一个简单的 bridge table,它是一个 table,将 property table 连接到 features 您应该为 属性 项定义。

其实第二种方法在数据库设计中是一种适用的方法。因为它是可扩展的,即您每次都可以添加每个新功能!

希望以上解释对您有所帮助!