閱讀616 返回首頁    go 阿裏雲 go 技術社區[雲棲]


數據庫設計

數據庫設計

ER模型

Entity-Relationship,實體-關係模型。該模型的圖形化表示就是ER圖。

1.用矩形表示實體。

2.用橢圓表示實體屬性。

3.用零星表示是體檢關係。

微笑例一:有一個簡單的數據庫係統,實體有班級、學生、課程。

一個班有若幹個學生,一個學生隻能屬於一個班。

一個學生可以選修多門課,一門課有若幹學生選修。


將ER圖轉換為關係數據模型

1.實體的轉換
一個實體轉化為一個關係模式。實體的屬性就是關係模式的屬性,主鍵類同。
2.聯係的轉換
(1)兩實體間1:1的聯係可以轉換為一個獨立的關係模式,也可以與任意一端的關係模式合並。
(2)兩實體間1:N的聯係可以轉換為一個獨立的關係模式,也可以與N端對應的關係模式合並。
(3)兩實體間M:N的聯係,必須為聯係產生一個新的關係模式。該模式中至少包含兩實體的主鍵。若聯係有屬性,也要加入該新的關係模式中。

關係代數

傳統的集合運算:並、交、補、差、笛卡爾積。

專門的關係運算:投影(垂直分割)、選擇(水平分割)、連接(關係的結合)、除法(笛卡爾積的逆運算)。

笛卡爾積:設元素R和S的屬性個數分別為r、s。則R*S={<A,B>|A屬於R,B屬於S}。


左右連接、內連接

左外連接是以左邊的表為基準。通俗的講,先將左邊的表全部顯示出來,然後把右邊表中符合條件的數據項拚接上去。

右外連接以右邊表為基準。

內連接就是隻顯示匹配得上的數據項。

示例:
[TEST1@orcl#16-12月-11] SQL>select * from t1;

        ID NAME
---------- --------------------
         1 aaa
         2 bbb

[TEST1@orcl#16-12月-11] SQL>select * from t2;

        ID        AGE
---------- ----------
         1         20
         3         30


左外連接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------

         1 aaa                           1         20

         2 bbb


右外連接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------
         1 aaa                           1         20
                                         3         30


內連接:
[TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------
         1 aaa                           1         20

關係的規範化

函數依賴。

X、Y為關係R中的兩個屬性。若Y可完全由X唯一確定,則稱Y依賴於X。記作X->Y.

索引類型

唯一索引:索引了不能有兩行記錄行同。
非唯一索引:與上述概念相對。


單列索引:索引根據單列創建。
複合索引:索引根據多列創建。


聚集索引:對表進行物理排序的索引。比如漢語字典按拚音字母順序進行聚集索引。
非聚集索引:不對表進行物理排序的索引。比如漢語字典中偏旁部首的索引。數據庫中可有1個聚集索引和多個聚集索引。

最後更新:2017-04-03 05:39:19

  上一篇:go C++ 11 新特性
  下一篇:go C++ 11 新關鍵字