我有一个奇怪的数据库设计问题,我不确定我是否做对了。由于我当前的设计非常复杂,因此我在下图中简化了它,并使用房屋和居住者(不是我的实际实体)进行了比较。
因此,这是数据库设计的部分内容:
标准条件:
- 多间房屋
- 每栋房屋多层
- 每层有多个卧室
非标准条件:
- 每个住户可以住在多个房子里
- 每个住户可以拥有多间卧室
- 每个住户每层每栋房子只能有一间卧室(这是棘手的部分)例如,他们可以在 1 楼拥有一间卧室,在 2 楼拥有一间卧室,在 3 楼拥有一间卧室,但不能在同一间卧室拥有两间卧室地面
因此,我想要完成的就是这个。在应用程序设计中,我知道house
,我知道floor
,我知道occupant
。bedroom
我需要在没有用户指定的情况下使用这些信息找出occupant
基于这 3 个标准的内容。有两种解决方案。首先是在occupants_has_bedrooms
表中,我将主键设为occupants_id
,bedrooms_floors_id
和bedrooms_floors_houses_id
. 但是,当我bedrooms_id
从主键中取出时,该表不再是与父级的识别关系(bedrooms
)。这是一种识别关系,因为没有父母就无法存在。因此,有些事情告诉我我需要将所有四个 id 作为主键。我的第二个选项是这三个值之间的唯一索引,但是这是我认为我可能正在接近这个错误的时候。
我该如何做到这一点?