日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关系数据库设计【笔记】

發布時間:2025/4/16 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关系数据库设计【笔记】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡述

學習《數據庫系統概念》做的筆記

  • 前一篇是ER圖以及ER模型相關的
  • E-R模型和E-R圖

文章目錄

    • 簡述
    • 函數依賴
      • 通過函數依賴發現問題
    • 無損分解和有損分解
    • 原子域和第一范式
      • 原子域定義
      • 第一范式定義
    • 使用函數依賴進行分解
      • 超碼的定義
      • 關系依賴
      • 平凡的函數依賴
      • 閉包(closure)
      • Boyce-Codd范式(BC范式)
      • 第三范式(3NF)
    • 函數依賴理論
      • Armstrong公理
      • 屬性集的閉包
    • 第四范式
      • 多值依賴
      • 第四范式(4NF)
    • 正則覆蓋
      • 無關屬性
        • 實例
      • 正則覆蓋

函數依賴

  • 定義一條規則,“如果存在模式(dept_name, budget),則dept_name可以作為主碼”。
  • 這條規則就被定位為函數依賴(functional dependency)

通過函數依賴發現問題

  • 如果存在這樣的函數依賴,但是dept_name卻不是原來的關系數據庫的主碼。那么說明有重復的budget信息。

無損分解和有損分解

  • 無損分解:分解之后,再用自然連接的方式組合起來可以恢復為原樣。否則就是有損的。

原子域和第一范式

  • 之前在ER模型中講到了子結構的問題。這里對這種東西做一個思想化。

原子域定義

  • 一個域是原子的,如果該域中的元素被認為是不可分的單元(不存在子結構)。

第一范式定義

  • 我們稱一個關系模式R屬于第一范式(First normal Form, 1NF),如果R中的所有的元素都是原子的。

使用函數依賴進行分解

超碼的定義

  • 舊定義: 可以唯一識別關系中的一條元組的一個或等多個屬性的集合
  • 新定義: 令r(R)是一個關系模式。R的子集K是R的超碼的條件是
    • 在r (R)的合法實例中,對r的實例中的所有元組對t1t_1t1?t2t_2t2?,若 t1≠t2t_1 \neq t_2t1???=t2?,則t1[K]≠t2[K]t_1[K] \neq t_2[K]t1?[K]??=t2?[K]

關系依賴

表達式看起來比糅雜,但是意思很簡單。

  • 我們說這個實例是滿足A->B 這樣的函數依賴,就是說,對于這個實例的任兩個元組,如果他們的A部分是一樣的話,那么B部分也是一樣的。

其實跟我們之前講到的那個例子是完全符合的。

平凡的函數依賴

有些函數依賴是很顯然的。

  • 比如:A->A之類的。

閉包(closure)

  • 在一個關系模式上,其實是有很多的函數依賴的。
  • 比如:A->B,B-C 就可以知道A->C。

給出閉包的概念

  • 就是有一個集合F,能通過F推導出來的所有閉包的集合就是F的閉包。

例如:

  • F = {A->B,B-C}
  • 那么, F’ = {A->B,B-C, A->C} 是F的閉包

Boyce-Codd范式(BC范式)

  • BC范式比較好,它能消除掉所有的基于函數依賴的冗余

條件非常簡單:
基于函數依賴集合F的關系模式R屬于BCNF,
對于F閉包中的所有范式a-b,必須要有下面的兩個條件滿足一個

  • a->b是一個平凡的函數依賴
  • a是函數的超碼

其實這是合理的。

  • 如果是超碼,當然一點問題都沒有。(因為超碼本身就會帶著一堆的函數依賴)
  • 如果不是超碼的話,就必須要保證這個函數依賴是平凡的。(可以理解為沒什么影響的

因為平凡的話,是說對任意的關系,這個函數依賴都成立,那。。當然無論你怎么改這玩意都是存在的啦。。當然就不管它啦。

第三范式(3NF)

3NF是相當于BCNF更弱一點的范式。
3NF放寬了點條件

對于F閉包中的所有范式a-b,必須要有下面的三個條件滿足一個

  • a->b是一個平凡的函數依賴
  • a是函數的超碼
  • b-a中的每一個屬性,都包含于R的一個候選碼中(可以是每個屬性屬于不同的候選碼)

函數依賴理論

  • 邏輯蘊涵(logically imply),(其實就說有一個函數依賴,可以用一個函數依賴集中的某些東西來推導出來,那么就蘊涵了唄)
  • (所以,就會有閉包的概念出現了)

Armstrong公理

一般來說,大家都是知道這個公理的內容,而記不太住,這個公理的名字。。

  • 自反律,a包含有b,則a->b
  • 增補律,a->b且c也是一個屬性集,則ac->bc
  • 傳遞律,a->b且b->c,則a->c

Armstrong公理是正確而有效的(sound)。
但是用這個來算閉包實在是太麻煩了。。。

  • 合并律,a->b且a->c,則a->bc
  • 分解律,a->bc,則a->b且a->c
  • 偽傳遞律,a->b ,bc->d,則ac->d

屬性集的閉包

  • a->b,我們就說b被a給函數確定
  • 閉包的符號定義A+A^+A+AAA的閉包

第四范式

多值依賴

多值依賴A->->B條件,對于任意兩個滿足t1[A] = t2[A]的實例來說,都存在有一個t3和t4,使得

  • t1[A] = t2[A] = t3[A] = t4[A]
  • t3[B] = t1[B] 并且 t3[R-B] = t2[R-B]
  • t4[B] = t2[B] 并且 t4[R-B] = t1[R-B]

第四范式(4NF)

對于在這個范式中,所有的多值依賴(來自整個的閉包)至少有下面中的一個成立

  • A->->B是一個平凡的多值依賴
  • A是超碼

正則覆蓋

無關屬性

  • 將依賴集合F中的某個函數依賴的左邊的某個屬性去掉之后,任然被之前的F給邏輯蘊含。則這個屬性是無關屬性。
    類似的定義在右半部分(但是就是去掉后的部分要蘊含原來的F)

實例

  • 比如AB->C和A->C在函數依賴集合上,那么B就是無關屬性

正則覆蓋

  • 去除掉所有的無關屬性
  • 然后如果有A->B并且有A->C那么就變成A->BC

總結

以上是生活随笔為你收集整理的关系数据库设计【笔记】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。