數據庫設計之 ER圖、三大范式


 

ER圖

Entity Relationship,實體關系圖。

 (圖源自csdn,最初的博主未知)

 

1、先畫出所有實體,矩形圈出來

2、再畫出每個實體的屬性,橢圓圈出來,實體、屬性之前用實線連接。為了方便找出主鍵,作為主鍵的屬性可以畫一條下划線。

3、標注實體之間的關聯關系:一對一(1,1)、一對多(1,n),多對多(m,n)。關系用菱形表示,並在菱形2邊的線上標上1、m、n這些表示2個實體之間關聯關系的字符。

 

 

關聯關系:

一對一,一個人只對應一張身份證,一張身份證也只對應一個人。(2個一對一)

一對多,一個用戶可以擁有多個訂單,一個訂單只能屬於一個用戶。(1個一對一、1個一對多)

多對多,一個老師可以教多個學生,一個學生可以有多個老師。(2個一對多)

 

比如實體A、B,先把A作為1,看B是1還是多;再把B作為1,看A是1還是多。

如果2個都是一對一,那A、B就是一對一;

如果1個一對一、1個一對多,那A、B是一對多;

如果2個都是一對多,那A、B就是多對多。

 

 


 

 

 

數據庫三大范式

數據庫有8種范式(Normal Form),通常只用到前3種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。

 

1NF  屬性的原子性(不可再分)

數據庫中的每一個字段都要是不可再分隔的基本

 

 

2NF   屬性完全依賴於主鍵

一張表中的每一條記錄都要是可區分的,只通過主鍵來區分,所以一張表必須要有一個unique字段。

第二范式建立在第一范式的基礎上,滿足第二范式必須要先滿足第一范式。

 

 

3NF  屬性不能有依賴傳遞(不依賴於主鍵之外的其它屬性)

比如tb_student存儲學生信息,學生成績這個列依賴於課程,課程依賴於課程id,tb_student的主鍵時學生id,表中的記錄只能依賴於學生id,

學生成績不能放在tb_student中,因為放在tb_student中,這一列依賴課程id,依賴的是這張表主鍵(學生id)之外的列(課程id),所以要划出去單獨用一張表來存儲學生成績。

第三范式建立在第二范式的基礎上,滿足第三范式需要先滿足第二范式。

 

我們設計的關系型數據庫要滿足以上3種范式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM