私はこれを正しく行っているかどうかわからない奇妙なデータベース設計の問題を抱えています。私の現在の設計は非常に複雑なので、次の図では、家と居住者(実際のエンティティではない)を使用して比較して簡略化しています。
したがって、データベース設計のどの部分がどのように見えるかを次に示します。

標準状態:
- 複数の家
- 家ごとに複数のフロア
- フロアごとに複数のベッドルーム
それほど標準的ではない条件:
- 各居住者は複数の家に住むことができます
- 各居住者は、家ごとに複数の寝室を持つことができます
- 各居住者は、1つの家につき1つのフロアに1つのベッドルームしか持てません(これは注意が必要な部分です)。たとえば、1階に1つのベッドルーム、2階に1つのベッドルーム、3階に1つのベッドルームを持てますが、同じ場所に2つのベッドルームを持てることはできません。床
したがって、私が達成しようとしているのはこれです。アプリのデザインでは、私は知っていますhouse、私は知っています、floorそして私は知っていoccupantます。ユーザーが指定せずにこの情報で知る必要があるbedroomのoccupantは、これら3つの基準に基づいたものです。2つの解決策があります。1つ目は、occupants_has_bedroomsテーブルで主キーを、、occupants_idおよびbedrooms_floors_idにすることbedrooms_floors_houses_idです。ただし、bedrooms_id主キーを削除すると、テーブルは親との識別関係ではなくなります(bedrooms)。親なしでは存在できなかったので、それは識別関係です。したがって、4つのIDすべてを主キーとして保持する必要があるとのことです。私の2番目のオプションは、これら3つの値の間の一意のインデックスですが、これは、私がこれに間違ってアプローチしている可能性があると考えたときです。
どうすればこれを達成できますか?