私はデータモデルに苦労しています(私はデータベースにMySQLを使用しています)。私は何を思いついたのか不安です。もし誰かがより良いアプローチを提案したり、私がそれを感謝するいくつかの参考事項を指摘することができます。データモデリングの問題で悩む
データには多くの種類の組織が存在します。私は3つのレベルの分類(クラス、カテゴリ、タイプ)をしようとしています。私は「イタリア料理」を持っている場合、それは次のような分類
フードサービスがありますと言う>レストラン>イタリア
しかし、組織が複数のグループに属していてもよいです。レストランでは中国語とイタリア語も提供しています。
ORG_CLASS(のRowId、ClassCode、:だから、2つの分類に
フードサービス>レストラン>イタリア
フードサービス>レストラン>中国
分類参照テーブルは以下のようになるに適合しますクラス名)
1, FOOD, Food Services
ORG_CATEGORY(のRowId、ClassCode、CategoryCode 、カテゴリ名)
1, FOOD, REST, Restaurants
ORG_TYPE(のRowId、ClassCode、CategoryCode、のTypeCode、型名)
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表のROWIDが移入されます。
検索中に3つの分類がすべて選択された場合は、より具体的になります。例えば、
フードサービス>レストラン場合>イタリアの句は次のようになりの基準を、ある'where OrgGroupId1 = 100'
唯一の2レベルが
フードサービス>レストラン
私がしなければならないを選択している場合'where OrgGroupId1 in (100,101,102,103,104,105, .....)'
- そのリストに100個ある可能性があります
私はクラスレベルの検索を禁止します。それは私がクラスとカテゴリの選択を強制するでしょう
Idsは整数です。私はパフォーマンスの問題やその他の問題を見たいと思っています。
全体的には、これは機能しますか?または私はこれを投げ捨ててゼロから始めなければなりません。
これはあなたの目的のためにやり過ぎかもしれませんが、階層的データの管理についての良い記事:用http://dev.mysql.com/tech-resources/articles/hierarchical-data.html – trickwallett
感謝リンク。それは確かに良い参考資料です。それは私に分類のための別の選択肢を与えました。この記事のこのアプローチはより柔軟であり、分類の数レベルを制限しません。 – rpat
@trickwallet:記事はこのアドレスではもう利用できません。今ここにあります:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ –