日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【数据库】数据库入门(二): 关系型数据库

發布時間:2024/3/13 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】数据库入门(二): 关系型数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義

  • 屬性(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): 定義的多個二維表及其包含的所有屬性。
    • 它包括表名和一系列的屬性
    • 每個屬性都跟域相關聯
ENROL(StudentID, CourseNo, Semester, Status, EnrolDate); ENROL(StudentID: INT, CourseNo: STRING, Semester: STRING, Status: STRING, EnrolData: DATE);
  • 關系數據庫模式(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 的兩個外鍵:

  • [ CourseNo ] ??COURSE [ No ]
  • [ StudentID ] ? STUDENT [ StudentID ]
  • ?

    容易違反約束條件的幾種情況

    • 插入操作(Insert)
    • 刪除操作(Delete)
    • 更新操作(Update / Modify)

    總結

    以上是生活随笔為你收集整理的【数据库】数据库入门(二): 关系型数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。