實例詳解MySQL資料庫的設計問題

零到壹度
發布: 2018-03-30 13:41:17
原創
2451 人瀏覽過

本文主要為大家分享一篇關於MySQL資料庫的設計問題,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧,希望能幫助大家。

第一題:層級資料庫設計

題目描述:現在有10萬個左右的數據,記錄一個部門的員工。大部門下是層級結構,有許多個子部門。例如,一級部分A,二級部門A',B',C',三級部門A”,B”,C”。試問如何設計資料庫,我們需要統計二級部分A'下的所有人數。
分析:
這裡用到了一個層級資料庫的設計。

#dep_name

實例詳解MySQL資料庫的設計問題parent_id

#2B1#3C14D2#5E#26F3#7
#1 A NULL
##G

實例詳解MySQL資料庫的設計問題3

顯示層級,這裡用到了left join,根據這一層的實例詳解MySQL資料庫的設計問題dep_id
,尋找它的
parent_id

,然後透過左連接進行連接,得到當前部門以及他的父部門。的表。部門為B的人,並且列出了他的上級部門資訊

CREATE TABLE DEPARTMENT(
    DEP_ID INT UNSIGNED AUTO_INCREMENT,
    DEP_NAME VARCHAR(10) NOT NULL,
    PARENT_ID INT,    
    PRIMARY KEY(DEP_ID)
)CHARSET=utf8;
登入後複製
實例詳解MySQL資料庫的設計問題

查找二級部門為B的總人數

单个插入
INSERT INTO DEPARTMENT (DEP_NAME, PARENT_ID)
VALUES
('A',NULL);
或者批量插入
INSERT INTO department VALUES(1,'A',NULL),(2,'B',1),(3,'C',1),
        (4,'D',2),(5,'E',2),(6,'F',3),(7,'G',3);
登入後複製
显示實例詳解MySQL資料庫的設計問題

id實例詳解MySQL資料庫的設計問題
name

department_iddepartname1 hgy4D2abc5#E3def6F4ddd 2B5#eee2B
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';
登入後複製
create table people(
    id INT UNSIGNED AUTO_INCREMENT,
    name varchar(10) not null,
    dep_id INT UNSIGNED,
    departname varchar(10),   
    FOREIGN KEY (dep_id) REFERENCES department(dep_id),    
    primary key(id)
    )charset=utf8;
登入後複製
應該考慮到有的人在二級部門(可能沒有三級部門,沒有四級部門),有的人在一級部門,有的人在四級部門(有一級部門,二級部門,三級部門,四級部門)。成績,求四門學科總分大於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');
登入後複製
實例詳解MySQL資料庫的設計問題

這裡是一個不能直接用別名來排序的知識點,

以上是實例詳解MySQL資料庫的設計問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板