学習目的で個人的なプロジェクトを開発しようとしています。広告主 (登録ユーザー) が所有する物件 (アパート、土地、家屋など) の広告を、賃貸 (一定期間または不定期間) または販売用に掲載できる不動産 Web サイト。また、クライアント (訪問者) が特定の場所で賃貸または購入する特定のタイプのプロパティを検索できる場所。
ビジネスルール:
- ユーザーは登録済みです。
- ユーザーには 1 つの役割と 1 つの役割 (ユーザー、管理者など) しかありません。
- ロールは多くのユーザーに属します (各ユーザーのデフォルトのロールはユーザーです)。
- ユーザーには 1 つの場所があり、場所は 1 つだけです (場所は住所を参照)。
- 場所は多くのユーザーに属しています。
- ユーザーは多くのプロパティを持っています (賃貸または販売のいずれか)。
- プロパティは 1 人のユーザーに属します。
- プロパティは 1 つの場所に属します (場所は住所を指します)。
- ファイルはプロパティに属しています。
- プロパティには多くのファイル (基本的には画像) があります。
私は非常に多くのGoogle検索を行い、databaseanswers.orgでいくつかのデータベースモデリングを見ましたが、プロパティのタイプ/機能に行き詰まっています。実際には理解できません。これに対する最良の解決策がわかりません!! 物件のタイプごとに特徴が異なるため、たとえば、アパートには部屋、バスルームがありますが、土地にはありません。土地については、町内または町外と言えます…</p>
このデータベースをより保守しやすくスケーラブルに設計したいと考えています。データベースの設計構造によって、開発中にクエリやコードが複雑になることは望ましくありません。
私の「小さな」問題について何かアドバイスをいただければ幸いです。
各プロパティのタイプを独自のエンティティ(テーブル) (たとえば、アパートテーブル、土地テーブル、住宅テーブルなど)に分離する必要がありますか? そうすれば、それらを独自の機能に関連付けることができます。
または、それらを 1 つのテーブル「Properties」にすべてのFeaturesとマージし、別のテーブル「Type」を使用して各プロパティをそのタイプにリンクする必要がありますか (投稿やカテゴリのように)。
または、4 つのテーブル"Properties" "Type" "Features"とピボット テーブル"feature_property"を作成する必要がありますか。
- プロパティは 1 つのタイプ (アパート、土地、家屋など) に属します。
- 型には多くのプロパティがあります。
- 機能には多くのプロパティがあります。
- プロパティには多くの機能があります。