數據庫關系模式有哪些類型?


數據庫關系模式有哪些類型?

文章插圖
在關系數據庫中有型和值兩種類型結構 。關系模式是型,關系是值,關系模式是對關系的描述 。
描述一個關系需要從以下兩個方面來定義:第一方面,關系實質上是一個二維表,表的每一行為一個元組,每一列為一個屬性 。一個元組就是該關系所涉及的屬性集的笛卡兒積的一個元素 。關系是元組的集合,因此關系模式必須指出這個元組集合的結構,即它由哪些屬性構成,這些屬性來自哪些域,以及屬性與域之間的映象關系 。
第二方面,一個關系通常是由賦予它的元組語義來確定的 。元組語義實質上是一個n目謂詞(n是屬性集中屬性的個數) 。凡使該n目謂詞為真的笛卡兒積中的元素(或者說凡符合元組語義的那部分元素)的全體就構成了該關系模式的關系 。
1.3.1關系數據庫基本概念關系數據中,關系模式涉及眾多概念、術語,初學者對這方面不容易把握與理解,以下用通俗易懂的語言來對這些概念及術語作簡單的介紹 。
1.關系關系(Relation)是指數據庫中實體的信息,也就是數據庫中二維表的數據 。一個關系就是一個數據庫表的值,表中的內容是對應關系模式在某個時刻的值,稱為一個關系 。例如,關系A表示數據庫有一張名字為A的數據表所記錄的所有數據 。關系數據庫中每一個關系都具有以下六方面的性質:((1)列是同質的 。即每一列中的分量為同一類型的數據,來自同一個域 。
(2)不同的列可出自同一個域,稱其中的每列為一個屬性,不同的屬性要給予不同的屬性名 。
(3)列的順序無所謂 。即列的次序可以任意交換 。
(4)任意兩個元組不能完全相同 。
(5)行的順序無所謂 。即行的次序可以任意交換 。
(6)分量必須取原子值 。即每一個分量都必須是不可分的數據庫屬性 。
2.模式模式(Schema)是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖,也稱邏輯模式 。有以下幾方面性質:((1)一個數據庫只有一個模式 。
(2)模式是數據在邏輯級上的視圖 。
(3)以某一種數據模型為基礎 。
定義模式時不僅要定義數據的邏輯結構,包括數據項的構成、名字、類型、取值范圍等,而且要定義與數據有關的安全性、完整性要求,定義這些數據之間的聯系 。
3.關系模式關系模式(RelationSchema)描述的是與關系相對應的二維表的表結構,即關系中包含哪些屬性,屬性來自哪些域,以及與域之間的映象關系 。
關系模式與關系的區別:((1)關系模式描述了關系數據結構和語義,是關系的型 。而關系是一個數據集合,是關系模式的值,是關系模式的一個實例 。
(2)關系實際上就是關系模式在某一時刻的狀態或內容 。關系模式是靜態的、穩定的,而關系是動態的、隨時間不斷變化的,因為數據庫操作會不斷地更新數據庫中的數據 。
4.元組元組(Tuple)是關系數據庫中的基本概念,一個關系表中的每行就是一個元組 。也就是說數據庫表中的每條記錄都是一個元組,表結構的每列就是一個屬性,在二維表里,元組也稱為記錄 。元組可表示一個關系或關系之間的聯系 。
一般情況下,一個關系數據表中的每條記錄均有一個唯一的編號(記錄號),這個編號也叫元組號 。
5.碼碼(Key)是關系數據庫系統中的基本概念 。所謂碼,就是能唯一標識實體的屬性集,是整個屬性集,而不是單個屬性 。在關系數據庫中,碼包括多種類型,如超碼、候選碼和主碼 。
((1)超碼(SuperKey) 。超碼是一個或多個屬性的集合,這些屬性可以在一個實體集中唯一地標識一個實體 。如果K是一個超碼,那么K的任意超集也是超碼,也就是說如果K是超碼,那么所有包含K的集合也是超碼 。例如,學生是一個實體,則學生的集合是一個實體集,而超碼用來在學生的集合中區分不同的學生 。假設學生(實體)具有多個屬性:學號,身份證號,姓名,性別 。因為通過學號可以找到唯一一個學生,所以{學號}是一個超碼,同理{學號,身份證號}、{學號,身份證號,姓名}、{學號,身份證號,姓名,性別}、{身份證號}、{身份證號,姓名}、{身份證號,姓名,性別}也是超碼 。在這里,因為不同的學生可能擁有相同的姓名,所以姓名不可以區別一個學生,即{姓名}不是一個超碼,{性別}、{姓名,性別}也不是 。
(2)候選碼(CandidateKey) 。候選碼是可以唯一標識一個元組的最少的屬性集合 。候選碼是從超碼中選出的,因此候選碼也是一個或多個屬性的集合 。因為超碼的范圍太廣,很多是無用的,所以候選碼是最小超碼,它們的任意真子集都不能成為超碼 。例如,如果K是超碼,那么所有包含K的集合都不能是候選碼;如果K,J都不是超碼,那么K和J組成的集合{K,J}有可能是候選碼 。

推薦閱讀