だから私は人々がグループに入れられ、それらのグループが各人に保存されるプロパティを決定するデザインを持っています。
したがって、後で VIP 顧客を獲得し、その VIP 番号を記録することにした場合は、プロパティ「VIP_Number」を使用して「VIP メンバー」という新しいグループを作成し、それらの顧客をそのグループに配置できます。
したがって、従業員やその他の顧客には、関係のないフィールドはありません。
特定の人物の個別のテーブルから必要なすべてのデータを取得する最良の方法は何ですか? 後日追加されるデータ テーブルをサポートするソリューションが必要です。
テーブルのデザインはこちら。
ノート:
- 「d」プレフィックスはデータ テーブル用です
- 「x」プレフィックスは相互参照テーブル用です
- 「p」プレフィックスはプロパティ用です
- 読みやすくするために、さまざまな長さの ID を使用しました
- John Smith は従業員であるため、個人でもあります。
- Anna Backhouse は顧客であり、したがって個人でもあります。
- Mr Both は従業員と顧客の両方であり、したがって個人でもあります。
dピープル
ID pFirst_Name pLast_Name
----------------------------------------------------------
001 John Smith
002 Anna Backhouse
003 Mr Both
d従業員
ID pBadge_Code
----------------------------------------------------------
01 MB2012
02 JS2012
dお客様
ID pPhone_Number
----------------------------------------------------------
01 1800 backhouse
02 1800 both
dGROUP
ID pGroup_Name
----------------------------------------------------------
1 People
2 Employees
3 Customers
xGROUPS
dGROUPS_ID_parent dGROUPS_ID_child
----------------------------------------------------------
1 1
1 2
1 3
xピープル
dPeople_ID dGROUPS_ID
----------------------------------------------------------
001 2
002 3
003 2
003 3
x従業員
dPeople_ID dEmployees_ID
----------------------------------------------------------
001 02
003 01
xお客様
dPeople_ID dCustomers_ID
----------------------------------------------------------
002 01
003 02
Mr Both を検索した場合の望ましい結果:
ID pFirst_Name pLast_Name pBadge_Code pPhone_Number
----------------------------------------------------------
003 Mr Both MB2012 1800 both
John Smith を検索した場合の望ましい結果:
ID pFirst_Name pLast_Name pBadge_Code
----------------------------------------------------------
001 John Smith JS2012
Anna Backhouse を検索した場合の望ましい結果:
ID pFirst_Name pLast_Name pPhone_Number
----------------------------------------------------------
002 Anna Backhouse 1800 backhouse
彼らが使用しているすべてのグループのリストを取得できます。
SELECT `dGROUPS`.`ID` AS `Group ID`, `dGROUPS`.`pGroup_Name` AS `Group Name` FROM `dGROUPS`, `xGROUPS` WHERE `xGROUPS`.`dGROUPS_ID_parent` = `dGROUPS`.`ID` AND (`xGROUPS`.`dGROUPS_ID_child` IN (SELECT `dGROUPS_ID` FROM `xPeople` WHERE dPeople_ID = 003))
これは、People > Employees > Managers などのサブグループがある場合に役立ちます。
このクエリを実行し、それを使用して別のクエリを動的に形成して、目的の結果を得る必要があると考えています。2 つのクエリを使用してもかまいませんが、1 つを使用することをお勧めします。
おそらく、ビューを使用した解決策はありますか?
PHPとMySQLを使用しています。