<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              范氏之間的關系基礎知識(一)

              來源:CSDN 時間:2023-03-06 08:04:09

              目錄

              基礎知識


              (相關資料圖)

              函數依賴

              1NF 第一范式

              2NF 第二范式

              3NF 第三范式

              BCNF 鮑依斯-科得范式

              四種范氏之間的關系

              基礎知識

              實體:現實世界中客觀存在并可以被區別的事物。比如“一個學生”、“一本書”、“一門課”等等。值得強調的是這里所說的“事物”不僅僅是看得見摸得著的“東西”,它也可以是虛擬的,比如說“老師與學校的關系”。

              屬性:教科書上解釋為:“實體所具有的某一特性”,由此可見,屬性一開始是個邏輯概念,比如說,“性別”是“人”的一個屬性。在關系數據庫中,屬性又是個物理概念,屬性可以看作是“表的一列”。

              元組:表中的一行就是一個元組。

              分量:元組的某個屬性值。在一個關系數據庫中,它是一個操作原子,即關系數據庫在做任何操作的時候,屬性是“不可分的”。否則就不是關系數據庫了。

              碼:表中可以唯一確定一個元組的某個屬性(或者屬性組),如果這樣的碼有不止一個,那么大家都叫候選碼,我們從候選碼中挑一個出來做老大,它就叫主碼。

              全碼:如果一個碼包含了所有的屬性,這個碼就是全碼。

              主屬性:一個屬性只要在任何一個候選碼中出現過,這個屬性就是主屬性。

              非主屬性:與上面相反,沒有在任何候選碼中出現過,這個屬性就是非主屬性。

              外碼:一個屬性(或屬性組),它不是碼,但是它別的表的碼,它就是外碼。

              函數依賴

              部分函數依賴:設X,Y是關系R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴于X。

              舉個例子:

              碼用(學號+課程),為什么要加課程呢?因為不同課程成績是通過學號查不出來的。

              不過用(學號+課程)當作碼是不是有些問題?

              (學號+課程)->姓名,但是學號->姓名

              (學號+課程)->系名,但是學號->系名

              (學號+課程)->系主任,但是學號->系主任

              這個就是部分依賴,說實話我看定義一臉懵逼。

              要是上面那張表符合第二范式。需要將表拆分為兩張表。

              一張是 學號、課程、分數表

              另外一張是 學號、姓名、系名、系主任表

              完全函數依賴:設X,Y是關系R的兩個屬性集合,X’是X的真子集,存在X→Y,但對每一個X’都有X’!→Y,則稱Y完全函數依賴于X。

              例子:學生基本信息表R(學號,班級,姓名)假設不同的班級學號有相同的,班級內學號不能相同,在R關系中,(學號,班級)->(姓名),但是(學號)->(姓名)不成立,(班級)->(姓名)不成立,所以姓名完全函數依賴與(學號,班級);

              傳遞函數依賴:設X,Y,Z是關系R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴于X。

              例子:在關系R(學號 ,宿舍, 費用)中,(學號)->(宿舍),宿舍!=學號,(宿舍)->(費用),費用!=宿舍,所以符合傳遞函數的要求;

              1NF 第一范式

              數據庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本類型構成,包括整型、實數、字符型、邏輯型、日期型等。

              定義:如果一個關系模式R的所有屬性都是不可分的基本數據項,則R屬于1NF。

              也可表述為:數據庫表中的字段都是單一屬性的,不可再分。

              例如,下面的數據庫表是符合第一范式的:

              字段1 字段2 字段3 字段4

              而這樣的數據庫表是不符合第一范式的:

              字段1 字段2 字段3 字段4

              字段3.1 字段3.2

              具體的例子:

              比如“地址”屬性應該拆分為“城市”、“區縣”、“具體地址”便于使用。

              很顯然,在當前的任何關系數據庫管理系統(DBMS)中,誰也不可能做出不符合第一范式的數據庫,因為這些DBMS不允許你把數據庫表的一列再分成二列或多列。因此,想在現有的DBMS中設計出不符合第一范式的數據庫都是不可能的。

              2NF 第二范式

              若關系模式R∈1NF,并且每一個非主屬性都完全函數依賴于R的碼(多個主屬性字段的組合),則R∈2NF

              也可表述為:數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴(部分函數依賴指的是存在組合關鍵字中的某些字段決定非關鍵字段的情況),也即所有非關鍵字段都完全依賴于任意一組候選關鍵字。

              具體的可以參照上面部分函數依賴的例子

              3NF 第三范式

              關系模式R<U< em="">,F> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z íY), 使得X→Y,Y→Z,成立,則稱R<U< em="">,F> ∈ 3NF。

              也可表述為:在第二范式的基礎上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三范式。所謂傳遞函數依賴,指的是如果存在"A → B → C"的決定關系,則C傳遞函數依賴于A。因此,滿足第三范式的數據庫表應該不存在如下依賴關系:關鍵字段 → 非關鍵字段x → 非關鍵字段y

              比如:

              BCNF 鮑依斯-科得范式

              設關系模式R<U< em="">,F>∈1NF,如果對于R的每個函數依賴X→Y,若Y不屬于X,則X必含有候選碼,那么R∈BCNF。

              也可表述為:在第三范式的基礎上,數據庫表中如果不存在任何字段對任一候選關鍵字段的傳遞函數依賴則符合第三范式。

              比如:倉庫管理關系表為(倉庫ID, 存儲物品ID, 管理員ID, 數量),且有一個管理員只在一個倉庫工作;一個倉庫可以存儲多種物品。這個數據庫表中存在如下決定關系:

              (倉庫ID, 存儲物品ID) →(管理員ID, 數量)

              (管理員ID, 存儲物品ID) → (倉庫ID, 數量)

              所以,(倉庫ID, 存儲物品ID)和(管理員ID, 存儲物品ID)都是表的候選關鍵字,表中的唯一非關鍵字段為數量,它是符合第三范式的。但是,由于存在如下決定關系:

              (倉庫ID) → (管理員ID)

              (管理員ID) → (倉庫ID)

              即存在關鍵字段決定關鍵字段的情況,所以其不符合BCNF范式。數據表應修改為:

              倉庫管理:(倉庫ID, 管理員ID);

              倉庫:(倉庫ID, 存儲物品ID, 數量)。

              四種范氏之間的關系

              每一個范氏都是進一步約束的關系,如下圖:

              四種范式之間的關系

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩