【发布时间】:2016-12-19 09:33:53
【问题描述】:
我即将开发一个用于学习目的的个人项目。一个房地产网站,广告商(注册用户)可以在该网站上发布其房产(公寓、土地、房屋……)的广告,供出租(在规定期限或未规定期限内)或出售。此外,客户(访客)可以在特定位置搜索特定类型的属性以进行租或购买。
业务规则:
- 用户是注册用户。
- 用户有一个角色并且只有一个角色(用户、管理员……)。
- 角色属于多个用户(每个用户的默认角色是用户)。
- 用户有一个位置,只有一个位置(位置指地址)。
- 位置属于许多用户。
- 用户拥有许多房产(出租或出售)。
- 财产属于一位用户。
- 财产属于一个位置(位置指地址)。
- 文件属于属性。
- 属性有许多文件(基本上是图像)。
我做了很多谷歌搜索,在databaseanswers.org 中看到了一些数据库建模,但我被困在属性的类型/特征上,我无法弄清楚,我不知道最好的解决方案!因为每种类型的房产都有不同的特点,例如公寓有房间、浴室……但土地没有,对于土地我们可以说它们是在城里还是在城外——小镇……
我想将这个数据库设计得更易于维护和扩展。我不希望数据库设计结构在开发时导致更复杂的查询/代码。
如果你能给我一些关于我的“小”问题的建议,我将不胜感激。
我是否必须将每个 Property 的 Type 分开到它们自己的 Entity(表)中,例如 Apartments 表、Lands 表、Houses 表……这样我就可以将它们附上它们自己的Features。
或者我必须将它们与所有 Features 合并到一个表 “Properties” 中,并让另一个表 “Type” 来将每个属性链接到其类型(如在帖子和类别中)。
或者我必须创建四个表 “Properties” “Type” “Features” 和一个数据透视表 “feature_property "。
- 财产属于一种类型(公寓、土地、房屋……)。
- 类型有很多属性。
- 功能具有许多属性。
- 一个属性有很多特征。
【问题讨论】:
-
许多类似的问题被归为如下:class-table-inheritance
标签: mysql database-design subtype class-table-inheritance supertype