データ モデルに苦労しています (データベースに MySQL を使用しています)。私は自分が思いついたものについて不安です。誰かがより良いアプローチを提案したり、参考資料を教えてくれたりしたら、私はそれを感謝します.
データには、さまざまな種類の組織が含まれます。3 レベルの分類 (クラス、カテゴリ、タイプ) を実行しようとしています。たとえば、「イタリアン レストラン」がある場合、次の分類になります。
フードサービス > レストラン > イタリアン
ただし、組織は複数のグループに属する場合があります。レストランでは、中華料理やイタリア料理も提供される場合があります。したがって、2つの分類に当てはまります
フード サービス > レストラン > イタリア
料理サービス > レストラン > 中華料理
分類参照テーブルは次のようになります。
ORG_CLASS (RowId、ClassCode、ClassName)
1, FOOD, Food Services
ORG_CATEGORY(RowId、ClassCode、CategoryCode、CategoryName)
1, FOOD, REST, Restaurants
ORG_TYPE (RowId、ClassCode、CategoryCode、TypeCode、TypeName)
100, FOOD, REST, ITAL, Italian
101, FOOD, REST, CHIN, Chinese
102, FOOD, REST, SPAN, Spanish
103, FOOD, REST, MEXI, Mexican
104, FOOD, REST, FREN, French
105, FOOD, REST, MIDL, Middle Eastern
実際のデータ テーブルは次のようになります。
組織には最大 3 つの分類を許可します。それぞれ ORG_TYPE の行を指す 3 つの GroupId があります。だから私は自分のORGANIZATION_TABLEを持っています
ORGANIZATION_TABLE (OrgGroupId1、OrgGroupId2、OrgGroupId3、OrgName、OrgAddres)
100,103,NULL,MyRestaurant1, MyAddr1
100,102,NULL,MyRestaurant2, MyAddr2
100,104,105, MyRestaurant3, MyAddr3
データの追加中に、ダイアログでユーザーが clssa、カテゴリ、タイプを選択できるようになり、対応する GroupId に ORG_TYPE テーブルの行 ID が取り込まれる可能性があります。
検索中に、3 つの分類すべてを選択すると、より具体的になります。たとえば、
フード サービス > レストラン > イタリア語が条件で、where 句は次のようになります。'where OrgGroupId1 = 100'
2 つのレベルのみを選択した場合
フードサービス > レストラン
私はやらなければならない'where OrgGroupId1 in (100,101,102,103,104,105, .....)'
- そのリストには百があるかもしれません
クラスレベルの検索を禁止します。つまり、クラスとカテゴリの選択を強制します
Id は整数になります。パフォーマンスの問題やその他の問題を確認しようとしています。
全体として、これは機能しますか?または、これを捨てて最初からやり直す必要があります。