關聯式資料庫的模式設計 轉貼

2021-04-13 07:12:54 字數 2067 閱讀 8861

關係模式的設計問題

關聯式資料庫的設計理論主要包括三個方面的內容:資料依賴、正規化、模式設計方法。其中資料依賴起核心作用。

例:r(tname,address,c#,cname)

乙個教師可教若干門課;

每門課程只有乙個教師任教。

所以r的鍵是(tname,c#)。

實際使用中存在的問題:

1.資料重複

2.更新異常

3.插入異常

4.刪除異常

採用對屬性間的函式依賴來解決,使用分解方法,將r分解成兩個模式:

r1(tname,address)

r2 (tname,c#,cname)

分解後,四個問題解決基本解決。即每個教師的位址只存放一次,即使乙個教師沒有教學任務,他的位址也可存放在r1中。

但是這種分解並非最佳。例如要檢索教某門課的教師的位址,就需要進行聯接操作,但是代價太大。

函式依賴

函式依賴的定義

設有關係模式r(a1,a2,…,an)或簡記為r(u),x,y是u的子集,r是r的任一具體關係,如果對r的任意兩個元組t1,t2,由t1[x]=t2[x]導致t1[y]=t2[y],則稱x函式決定y,或y函式依賴於x,記為x→y。 x→y為模式r的乙個函式依賴。

這裡的t1[x]表示元組t1在屬性集x上的值,t2[x]表示元組t2在屬性集x上的值,函式依賴是對關係r的一切可能的當前值r定義的,不是針對某個特定關係。

函式依賴不是指關係模式r的某個或某些關係滿足的約束條件,而是指r的一切關係均要滿足的約束條件。不能只看到關係模式r的乙個特定關係,就推斷那些函式依賴對於r成立。

在關係模式r中,要判斷fd是否成立,惟一的辦法是仔細考察屬性的含義。即函式依賴實際是對現實世界的斷言。

例:學習關係r(s#,sn,c#,g,cn,tn,ta)

在r中的關係r中,存在函式依賴:

s#→sn(每個學號只能有乙個學生姓名)

c# →cn(每個課程只能對應一門課程名)

tn →ta(每個教師只能有乙個年齡)

(s#,c#) →g(每個學生學習一門課只能有乙個成績)

函式依賴的邏輯蘊涵

這裡主要研究對於給定的一組函式依賴,如何判斷另外一些函式依賴是否存在。

定義:設f是關係模式r的乙個函式依賴集,x,y是r的屬性子集,如果從f中的函式依賴能夠推出x→y,則稱f邏輯蘊涵x→y,記為f︱=x→y。

被f邏輯蘊涵的函式依賴的全體構成的集合,稱為f的閉包,記為f+。

•鍵鍵是惟一標識實體的屬性集。這裡把鍵和函式依賴結合起來,做乙個準確的定義。

設有關係模式r(a1,…,an),f是r上的函式依賴集,x是的乙個子集。如果

1.x→a1a2…an∈ f+,且

2.不存在x的真子集y,使得y→a1a2…an成立,則稱x是r的乙個候選鍵。

在定義中a1a2…an是a1∪a2∪…∪an的簡寫。1表示x能惟一決定乙個元組;2表示x能滿足1而又無多餘的屬性集。

例:設關係模式r(xyz),已知fd是x→y和y→z,那麼可以推出x→xyz也在f+中,但x的真子集(此處是空集)不可能函式決定xyz,因此,x是模式r的鍵。

例:r(s#,sname,***,age)

在該模式中,s#→ (s#,sname,***,age)

s#不存在任何真子集,所以s#是鍵。

(s#,sname)也可以決定r中的全部屬性,但它不是鍵,因為其中含有真子集s#,可以決定r的所有屬性。

函式依賴的推理規則

armstrong推理規則

設有關係模式r(a1,a2,…,an)和屬性集u= a1a2…an,x,y,z,w都是u的子集,f是r上只涉及到u中屬性的函式依賴集,推理規則如下:

1.自反律

如果yíxíu,則x→y在r上成立。

2.增廣律

如果x→y為f所蘊涵,zíu,則xz→yz在r上成立。(xz表示x∪z)

3.傳遞律

如果x→y和y→z在r上成立,則x→z在r上也成立。

4.合併律

如果x→y和x→z成立,那麼x→yz成立。

5.偽傳遞律

如果x→y和wy→z成立,那麼wx→z成立。

6.分解律

如果x→y和zíy成立,那麼x→z成立。

關係 關係模式 關聯式資料庫

表student 在關係模型的術語中,關係用來指代表,而元組用來指代行。類似地,屬性指代的是表中的列。在表student中有五個屬性 sno sname s sage和sdept。我們用關係例項這個術語來表示乙個關係的特定例項,也就是所包含的一組特定的行。表student的例項中有5個元組,對應5個...

關聯式資料庫設計正規化

簡介 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴德斯科正規化 bcnf 第四正規化 4nf 和第...

關聯式資料庫的設計正規化

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列不能有多個含義,即實體的某個屬性不能有多個含義或者不能有重複的屬性。1nf是關聯式資料庫的基本原則,不滿足1nf的要求,就不能稱其為關聯式資料庫。第一正規化表達了如下3個意思。1 乙個表中不能同時存在兩個含義重複的屬性。2 ...