久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何設計數據庫

238次閱讀
沒有評論

共計 1912 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹了如何設計數據庫,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

1. 相關概念

(1)實體(entity):我們用數據庫要描述的對象,可以是具體的,也可以是抽象的。比如“一個學生”、“一本書”、“一門課”等等;當然也可以是“學生與老師的關系”。

(2)字段(fields):就是我們看到的列(column),代表了我們要描述實體的屬性。

(3)記錄(record):就是我們平常所說的行(row),代表了我們要描述不同的具體實體。

(4)碼(key):表中可以唯一確定一個元組的某個屬性(或者屬性組),我們在數據表中叫做鍵。

(5)主鍵(primary key):用于唯一標識一個表中的一條記錄的鍵。

(6)外鍵(foreign keys):對連接父表和子表的相關記錄的主鍵字段的復制。

(7)完全函數依賴(full functional dependency):次屬性完全依賴一個主屬性,或者一個主屬性組

(8)部分函數依賴(partial functional dependency):次屬性依賴于主屬性組中的某一個屬性

(9)依賴表(dependent table):也稱為弱實體(weak entity)是需要用父表標識的子表。

(10)關聯表(associative table):是多對多關系中兩個父表的子表。

2. 數據設計參考范式

2.1 第一范式(1NF):屬性不可拆分

          圖 2.1.1“郵箱”屬性的值被分為兩列,不符合第一范式。而圖 2.2.2“郵箱”的屬性被分割,也不符合第一范式。更改后的圖 2.1.3 則符合了第一范式,屬性不可拆分。

2.2 第二范式(2NF):去除部分依賴,保留完全依賴

姓名

課程

分數

教材

價格

小王

英語

91

英語書

10

小魏

數學

85

數學書

9

小王

數學

96

數學書

9

小魏

語文

100

語文書

8

圖 2.2.1:符合第一范式,但不符合第二范式

          現在我們有一張符合第一范式的表,但他仍然會給我們帶來很多麻煩。

  如果想要增加一門課程,如何操作?

姓名

課程

分數

教材

價格

小王

英語

91

英語書

10

小魏

數學

85

數學書

9

小王

數學

96

數學書

9

小魏

語文

100

語文書

8

 

物理

 

物理書

 

 

物理

 

物理書

 

 

物理

 

物理書

 

圖 2.2.2:插入異常

  每次插入“物理”都要插入一次“物理書”。而且,主要的“姓名”字段為空,這個叫插入異常。

姓名

課程

分數

教材

價格

小王

英語

91

英語書

10

小魏

數學

85

數學書

9

小王

數學

96

數學書

9

圖 2.2.3:刪除異常

  由于高年級不再需要“語文課”,那么我們先把含有“語文”的記錄都刪除掉,這個時候我們同樣把“課程”和“教材”關系也刪除了,我們就不知道“語文”這門課要用什么“教材”了。這個叫刪除異常。

姓名

課程

分數

教材

價格

小王

英語

91

英語書

10

小魏

數學

85

數學書

9

小王

數學

96

數學書

9

小魏

語文

100

語文書

8

圖 2.2.4:更改異常

  我們要把“數學書”這個教材換成“高級數學書”,那么所有的先關記錄都要更改一遍,是不是很麻煩?這個叫更改異常。

  為了解決上述三個問題,我們就引入了第二范式(2NF)

 (姓名,課程)(分數)

 (姓名,課程)(教材)

  由于“姓名”和“課程”這兩個字段能確定剩下的字段,我們就稱這樣的字段組合為“碼”,而碼中的每個字段我們稱之為“主屬性”。非碼的字段我們稱之為“次屬性”。

  我們注意到,在(姓名,課程)(教材)的這個關系中,存在(課程)(教材)。就是課程可以單獨確定教材,那么“老師”這個字段,對“姓名”和“課程”鍵的依賴就叫做部分依賴(因為它部分依賴與組合鍵中的“課程”字段)。而“教室”、“時間”則完全依賴于“姓名”和“課程”的組合鍵。

通過拆分表,我們消除“部分依賴”。

上述三個問題是不是都解決了?在以后的學習中我們會學習到如何把兩個表關聯起來。

2.3 第三范式(3NF):符合 2NF,并且消除“傳遞依賴”

          每學期學校都會購書,而每年的書的價格都不一樣,比如今年“數學書”漲價賣“11”塊,我們就要把所有的含有數學書的記錄的價格都更改一遍,還是存在異常?

  在這里,“課程”“教材”“價格”,那么“價格”對“課程”就是“傳遞依賴”。這個時候我們需要把“課程”表再次拆分,消除“傳遞依賴”。

          最終我們得到了滿足三個范式的表格。即圖 2.3.1(拆分 1)、圖 2.3.3(拆分 3)、圖 2.3.4(拆分 4)所組成的表格。

          對比一下我們最初的表,是否很整潔呢?

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“如何設計數據庫”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計1912字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 沙湾县| 屯昌县| 丰台区| 南木林县| 新田县| 库尔勒市| 泽库县| 玉林市| 社旗县| 含山县| 山西省| 柯坪县| 洪湖市| 华坪县| 常山县| 施甸县| 宜章县| 留坝县| 阿尔山市| 苍梧县| 视频| 分宜县| 钟山县| 宜兰县| 巴里| 遂宁市| 南木林县| 理塘县| 陇南市| 高阳县| 新巴尔虎右旗| 湘阴县| 新昌县| 饶河县| 梨树县| 河曲县| 巴塘县| 舟山市| 余庆县| 赞皇县| 宁陕县|