【数据库】数据库入门(二): 关系型数据库
定義
- 屬性(Attribute): 表的每一列具有固定的屬性類別。
- 如姓名(Name)、年齡(Age)、地址(Address)、電話號碼(PhoneNumber)等。
- 域(Domain):?每個屬性所限定的數據類型及其取值范圍。
- 常用的域有字符串(STRING)、日期(DATE)、整型數(INT)等。
- 元組(Tuple): 表的每一行稱為一個元組,用來標識一個實體,表中不能出現相同的兩個元組。
- 單個元組的取值必然是所有域的笛卡爾積(Cartesian Product)的一個元素。
- 如 {'Sunday', ‘2019-08-02‘, 100} 是?{STRING, DATE, INT} 的一個元素。
- 關系(Relation): 由行和列交錯形成的二維表(Table),它表示一類數據關系。
- 單個二維表的取值必然是所有域的笛卡爾積(Cartesian Product)的一個子集。
- 關系模式(Relation Schema): 定義的多個二維表及其包含的所有屬性。
- 它包括表名和一系列的屬性
- 每個屬性都跟域相關聯
- 關系數據庫模式(Relational Database Schema):?
- 它是多個關系模式的集合(包括表名和所有屬性);
- 它是一個關于完整性約束(Integrity Constraints,IC)的集合。
- 關系數據庫狀態(Relational Database State):?
- 它是多個關系 / 表的集合;
- 在某一個具體時刻,一種關系數據庫模式只存在一種關系;
- 所有的關系 / 表都滿足完整性約束 (IC)。
?
關系型數據庫的完整性約束
1、域約束(Domain Constraints)
元組中的每一個值必須是在其屬性的取值范圍之中,即既要符合定義的數據類型,又要在取值范圍之中。
?
2、關鍵字約束(Key Constraints)
超鍵(SuperKey):在一個關系 / 表中,不存在兩個獨立元組的超鍵有相同的取值,即每一個獨立元組超鍵的取值必不相同。
候選鍵(Candidate Key):當一個超鍵不存在它的子集仍然為超鍵時,這個超鍵被稱為最小超鍵(minimal),也稱候選鍵。
主鍵(Primary Key):取候選鍵集合中的其中一個,可作為當前關系 / 表的主鍵(主鍵是惟一的)。
?
舉幾個例子說明一下
- {DoB} 是關系 STUDENT 的一個超鍵嗎?
- 不是,因為不同的元組可能在 DoB 這個屬性上取相同的值,即可能存在出生日期相同的兩個學生。
- {StudentID, DoB} 是關系 STUDENT 的一個超鍵嗎?
- 是的,因為通過這一組屬性,能唯一區分出一個獨立的元組。
- {StudentID, DoB} 是關系 STUDENT 的一個候選鍵嗎?
- 不是,因為存在它的子集 {StudentID} 也同樣是一個超鍵,同時這還是一個最小的超鍵,因此是一個候選鍵。
- {StudentID} 是關系 STUDENT 的一個候選鍵嗎?
- 是的,理由如上。
- {DoB} 是可以選為關系 STUDENT 的主鍵嗎?
- 不是,DoB本身不是一個超鍵,更不會是一個候選鍵,所以不能作為主鍵。
?
3、實體完整性約束(Entity Integrity Constraints)
實體完整性約束主要是對主鍵取值的約束。由于主鍵是用于獨立區別同一個關系中的不同元組,因此每一個元組的主鍵取值不能為 NULL,即不能為空。通常在定義關系或者定義屬性的時候,使用 NOT NULL 關鍵字對主鍵進行修飾。
注意:關系表 R 中的其他屬性也有可能被限定不能為空(NULL),即便它們并不是當前關系表的主鍵,但是主要一個屬性是關系表的主鍵,那它的取值絕對不能為 NULL。
?
4、引用完整性約束(Referential Integrity Constraints)
通過觀察發現,在存在多個關系表的關系數據庫模式中,數據實體并不會獨立存在于單一的關系表中。意思就是,任意一個元組(一個數據實體)必然在各個關系表中存在引用關系。
前面討論到的三種約束類型,都是針對單一的關系表;引用完整性約束針對的是兩個關系表之間的關系,要求指定兩個關系表中間的引用關系。
外鍵(Foreign?Key):對于一個關系表 R1 中的屬性 A,取任意一個 R1 中元組,在另一個關系表 R2 中都會存在一個元組,其屬性 B 的取值與 A 相等。這種情況下,我們把屬性 A 叫做關系表 R1 的外鍵,R1 叫做引用關系(Referencing Relation),R2叫做依賴關系(Referenced Relation)。
?
舉個例子說明一下
在上面的關系數據庫模式中,我們可以找出關系表 ENROL 的兩個外鍵:
?
容易違反約束條件的幾種情況
- 插入操作(Insert)
- 刪除操作(Delete)
- 更新操作(Update / Modify)
總結
以上是生活随笔為你收集整理的【数据库】数据库入门(二): 关系型数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言贾宗璞答案,c语言答案 贾宗璞、许
- 下一篇: 对话数据集