我应该如何在我的数据库设计中分离这些数据

Posted

技术标签:

【中文标题】我应该如何在我的数据库设计中分离这些数据【英文标题】:How should I separate this data in my database design 【发布时间】:2021-10-06 17:28:28 【问题描述】:

我对我正在从事的数据库设计感到有些困惑。这是一个房地产数据库。

我正在尝试存储房产的交易模式(出租或出售)。我制作了一个名为事务的查找表,因此我可以使用外键。但是,每种模式都有附加信息。销售有价格,而租金有费率(即月或学期)、价格、首付和押金。我不能把它们放在查找表中,因为会有很多空值。所以我想用属性ID制作一个销售表和一个出租表。这是一对一的关系(一个属性只有一种交易模式)。但是,考虑到这两个字段中的一个可能为 null 的事实,我想知道我是否应该在属性表中包含出租 ID 和销售 ID:

https://drive.google.com/file/d/127NhhhofVMzc3oyPBzHbS-5mPY2QUhEI/view?usp=sharing

或者我不应该将 id 放在属性选项卡中,因为出租和销售表已经有属性 id

https://drive.google.com/file/d/13CDVpQXrleNnmEUJniC8Q9ygEi-vvjvS/view?usp=sharing

感谢您的关注

【问题讨论】:

【参考方案1】:

将外键放入销售/租赁表中。毕竟,理论上,您可能正在租用您也想出售的房产。 所以: Rates.property 和 Sale.property 都指向 Property 表。然后,您可以使用 Property left join Rates on Property.id = Rates.property 引入详细信息,其中 Rates.property 不为空。

【讨论】:

等等,您所说的费率是指租金。因为我说的是 Rentals* 和 Sales* 表。因为我有点迷茫 是的,租金。【参考方案2】:

您不能多次租用房产吗?

要获得正确的 1:many 关系,Rentals 需要一个列 property_id不是。 (那是选项2,不是选项1)

我不明白什么是“交易”;我没有看到任何其他可以提供线索的列。

【讨论】:

确实选项2是我的想法。 Transaction 是一个带有“rent”和“sale”选项的查找表。不能多次出租或出售同一房产。 @Al.Salvador - 我不能租一个星期的房产,然后别人租下一周?

以上是关于我应该如何在我的数据库设计中分离这些数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组列表中分离数据并将其显示到列表视图中?

使用 webpack 在 vuejs 中分离模板

SwiftUI 如何从响应 JSON API 中分离单个数据

iPhone Model View Controller 在 ViewController 中分离

如何在 Microsoft Azure 流分析上从多个设备中分离数据

如何在另一个项目中分离实体框架