この記事は主に MySQL データベースの設計上の問題に関する記事を共有するものであり、非常に参考になるものです。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
質問の説明: 現在、ある部門の従業員を記録する約 100,000 個のデータがあります。ほとんどの部門の下には、多くのサブ部門からなる階層構造があります。たとえば、第 1 レベルのパート A、第 2 レベルの部門 A'、B'、C'、第 3 レベルの部門 A"、B"、C" です。データベースを設計する方法としては、すべてをカウントする必要があります。第 2 レベルのパート A' の下の人々。
分析: ここでは、階層型データベース設計が使用されています。
A
2 | B | 1 |
---|---|---|
C | 1 | |
D | 2 | |
E | 2 | |
F | 3 | |
G | 3 | |
ここでは、左結合が使用されています。それはそれでです左結合を介して接続し、現在の部門とその親部門を取得します | 部門レベルの情報を保存した後、部門担当者のテーブルの設計を開始します | テーブルを作成し、部門の担当者情報を保存します |
関連するテストデータを挿入します | 副部門がBである人物を検索し、その上位部門の情報をリストしますselect d1.dep_name as level1, d2.dep_name as level2, d3.dep_name as level3, d4.dep_name as level4 from department as d1 left join department as d2 on d2.parent_id = d1.dep_id left join department as d3 on d3.parent_id = d2.dep_id left join department as d4 on d4.parent_id = d3.dep_id where d1.dep_name='A'; ログイン後にコピー | 副部門がBである人の総数を見つけます |
iddep_id
,寻找它的parent_id
name
部署ID
部署名
hgy
D
abc | 5 | E | |
---|---|---|---|
6 | F | 4 | |
2 | B | 5 | |
2 | B | レベル部門(あるかもしれない)は 3 レベルの学科も 4 レベルの学科もありません)、ある人は 1 レベルの学科にいますが、一部の人は 4 レベルの学科にいます(1 レベルの学科、2 レベルの学科、3 レベルの学科があります) 、および第 4 レベルの学科) | |
2 番目の質問: 簡単な統計 | タイトルの説明: 生徒のスコアをバッチ処理し、4 つの科目の合計スコアが 200 を超える生徒を見つけて、逆に並べ替えます。 | INSERT INTO people VALUES(1,'hgy',4,'D'),(2,'abc',5,'E'),(3,'def',6,'F'), (4,'ddd',2,'B'),(5,'eee',2,'B'); ログイン後にコピー | |
4科目の合計点に応じて並べ替えます | 別名による並べ替えに関する知識のリストは次のとおりです。 |
以上がMySQL データベース設計の問題の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。