- 關系數據庫與SQL Server(2019版)
- 段利文 龔小勇主編
- 2752字
- 2021-12-17 17:41:01
項目1.3 設計關系數據模型

2 設計關系數據模型
邏輯模型是按照計算機系統的觀點對數據建模,是對數據邏輯結構的描述,主要用于DBMS的實現。主要的邏輯模型有關系數據模型、層次模型、網狀模型和面向對象模型四種。
用二維表格結構表示實體及實體之間聯系的邏輯模型稱為關系數據模型。關系數據模型在用戶看來是一個二維表格,它概念單一,容易被初學者接受。關系數據模型以關系數學為理論基礎,操作對象和操作結果都是二維表格。關系數據模型是由數據庫技術的奠基人之一E.F.Codd于1970年提出的。自20世紀80年代以來,計算機廠商推出的數據庫管理系統幾乎都支持關系數據模型,如Access、FoxBase、FoxPro、MySQL、PostgreSQL、Sybase、DB2、SQL Sever和Oracle等。
任務1.3.1 掌握關系數據模型的基本概念
下面以描述學生信息的學生表(見表1-2)和支持關系數據模型的SQL Server 2019為例,說明關系數據模型的基本概念。
1.關系
一個關系就是一張二維表,每個關系都有一個關系名,即每個表都有一個表名。例如,表1-2所示的表名為“學生表”。
表1-2 學生表

2.元組
二維表中的行稱為元組,每一行是一個元組。元組對應存儲文件中的一個記錄。例如,學生表中包含3個元組。
3.屬性和屬性值
二維表的列稱為屬性,每一列有一個屬性名,且各屬性不能重名。屬性值是屬性的具體值。屬性對應存儲文件中的一個字段。例如,學生表包含7個屬性,屬性名分別是學號、姓名、性別、年齡、籍貫、專業和學院編號,其中,“2020003001”“張國慶”“男”“20”“重慶”“物聯網工程”“01”是屬性值。
4.域
屬性的取值范圍稱為域。例如,學生表中性別的取值范圍只能是男和女。
5.關系模式
對關系的信息結構及語義限制的描述稱為關系模式,用關系名及其包含的屬性名的集合和關系的主鍵等表示。例如,學生表的關系模式是:學生(學號,姓名,性別,年齡,籍貫、專業、學院編號),其中學號是主鍵。
注意:關系模式和關系是彼此密切相關但又有區別的兩個概念。關系模式是對關系結構的定義,是對關系“型”的描述。關系是二維表格,是對“型”和“值”的綜合描述,“值”是指關系中的具體數據,例如,2020003001、張國慶、男、20、重慶等。一般說來,關系的“型”是相對穩定、不隨時間變化的,而關系的“值”是隨時間動態變化和不斷更新的。例如,在學生表中,由于學生轉專業、入學、退學和畢業等原因,學生關系中的數據是經常變化的,但其結構及對數據的限制是不會改變的。
6.鍵
鍵又稱關鍵字或碼,由一個或幾個屬性組成,在實際使用中,有下列兩種鍵。
候選鍵(Candidate Key):如果在一個關系中,存在多個屬性(或屬性組合)都能用來唯一標識該關系中的元組,這些屬性(或屬性組合)都稱為該關系的候選鍵。例如,在學生表中,如果沒有重名的元組,則學號和姓名都是學生表的候選鍵。一般情況下,如無特殊說明,則鍵就是指候選鍵。
主鍵(Primary Key):用戶選定的標識元組的一個候選鍵稱為主鍵。例如,如果選擇學號作為學生表中元組的標識,那么就稱學號為主鍵。如果一個關系只有一個候選鍵,則該候選鍵即為主鍵。主鍵的值不能為空,即主鍵的值為空的元組是不允許存在的。
7.非主屬性或非鍵屬性
在一個關系中,不能組成鍵的屬性稱為該關系的非主屬性或非鍵屬性。例如,學生表中的性別、年齡、籍貫和學院編號是非主屬性。
8.外鍵
一個關系的某個屬性(或屬性組合)雖不是該關系的鍵或只是鍵的一部分,但卻是另一個關系的鍵,則稱這樣的屬性為該關系的外鍵。外鍵是表與表聯系的紐帶。
例如,學生表中的學院編號不是學生表的鍵,但它卻是表1-3學院表的鍵,因此學院編號是學生表的外鍵。通過學院編號可以使學生表與學院表建立聯系。
表1-3 學院表

9.主表和從表
主表和從表是指通過外鍵相關聯的兩個表。以外鍵作為主鍵的表稱為主表;外鍵所在的表稱為從表。例如,學院表是主表,學生表是從表。
盡管關系與二維表格類似,但它們又有重要的區別。不能把日常手工管理所用的各種表格,按照一張表一個關系直接存放到數據庫里。關系數據庫要求其中的關系必須是規范化的,即必須滿足以下條件。
1)每一個關系僅有一種記錄類型,即只有一種關系模式。
2)關系中的每個屬性都是不可分解的,即不能表中套表。例如,手工制表中,經常出現表1-4所示的復合表,這種表格不是二維表,不能直接作為關系,應對其進行調整。對于該復合表,只要把應發工資和應扣工資兩個表項去掉就可以了。
表1-4 復合表

3)在同一個關系中,不能出現相同的屬性名。
4)在同一個關系中,不能出現完全相同的行。
5)在一個關系中,元組的位置無關緊要。任意交換兩行的位置并不影響數據的實際含義,即所謂排行不分先后。
6)在一個關系中,列的次序無關緊要。任意交換兩列的位置并不影響數據的實際含義。
任務1.3.2 將E-R圖轉化為關系數據模型
將E-R圖轉化為關系數據模型,一般應遵從以下三個原則。
1.每個實體轉換為一個關系
在進行轉換時要注意兩點:實體的屬性就是關系的屬性;實體的鍵作為關系的鍵。
下面以轉換如圖1-5所示的教學管理E-R圖為例進行講解。為簡便起見,這里假設有3位教師、5名學生和3門課程。該E-R圖中有教師、學生、課程三個實體,因此可轉換為三個關系表:教師表(主鍵為教工號)、學生表(主鍵為學號)、課程表(主鍵為課程號),分別如表1-5~表1-7所示。
表1-5 教師表

表1-6 學生表

表1-7 課程表

2.每個聯系也轉換成一個關系
在進行轉換時,要注意以下方面。
1)與關系相連的各個實體的鍵、聯系的屬性轉換成關系的屬性。
2)根據聯系的類型不同,關系的鍵規定如下。
對于1:1聯系,每個實體的鍵均是該聯系關系的候選鍵。
對于1:n聯系,關系的鍵是n端實體的鍵。
對于m:n聯系,關系的鍵是諸實體鍵的組合。
在如圖1-5所示的教學管理E-R圖中,有選修、講授、指導三個聯系,因此可轉換為三個關系表:選修表(主鍵為學號+課程號,外鍵為學號、課程號)、講授表(主鍵為教工號+課程號,外鍵為教工號、課程號)、指導表(主鍵為學號,外鍵為教工號),分別如表1-8~表1-10所示。
表1-8 選修表

表1-9 講授表

表1-10 指導表

3.有相同鍵的關系可以合并
由于學生表和指導表的鍵都是學號,因此,這兩張表可以根據實際情況進行合并。
在將E-R圖轉化為關系數據模型時,如果沒有具體數據,可用關系模式來代替關系表。因此,教學管理系統的關系數據模型也可以用以下關系模式來描述。

通過將E-R圖轉化為關系數據模型,實現了信息世界到機器世界的第二次抽象。
【課堂實踐3】
1)根據前面內容的描述,將聘用、錄取、開課三個聯系用關系模式來表示,并分別指出它們的主鍵和外鍵。
2)某個企業集團有若干工廠,每個工廠生產多種產品,且每一種產品可以在多個工廠生產,每個工廠按照固定的計劃數量生產產品;每個工廠聘用多名職工,且每名職工只能在一個工廠工作,工廠聘用職工有聘用期和工資。工廠的屬性有工廠編號、廠名、地址,產品屬性有產品編號、產品名、規格,職工的屬性有職工號、姓名。
①根據上述語義繪制E-R圖。
②將E-R模型轉換成關系數據模型,并指出每個關系模式的主鍵和外鍵。