文章目錄
- 1 數據庫的一些基礎概念
- 1.1 數據庫和數據庫管理系統
- 1.2 關系模式和關系實例
- 1.3 數據庫模式和數據庫實例
- 2 數據庫組織形式
- 2.1 數據采用文件的缺點
- 2.2 使用數據庫管理系統的 優點
- 3 關系型數據庫特點
- 4 三個層次的數據抽象Data Abstraction
- 5 超鍵、候選碼、主碼、外碼
1 數據庫的一些基礎概念
1.1 數據庫和數據庫管理系統
A database-management system (DBMS) is a collection of interrelated data and a set of programs to access those data.
It is a powerful tool for managing large amount of data efficiently and allowing data to persist safely.
Database refers to a collection of data that is managed by a DBMS
數據庫是一組相關數據的集合,而數據庫管理系統(DBMS)是管理、維護和操作這些數據的軟件系統。簡單來說,數據庫是數據的集合,而DBMS是用來管理和操作這些數據的工具。
1.2 關系模式和關系實例
關系模式(Relation Schema)和關系實例Relation Instance是關系型數據庫中的兩個不同但相關的概念。
A relation schema (關系模式) consists of a list of attributes and their corresponding domains.It defines the structure of the table, but does not include any actual data.
關系模式(Relation Schema)是指關系型數據庫中表格的結構,包括表格的名稱、列名、數據類型、主鍵和外鍵等。它定義了表格的結構,但并不包含任何實際的數據。關系模式通常通過CREATE TABLE語句來定義。
A relation instance (關系實例) is a set of tuples over a relation schema
關系實例(Relation Instance)是指關系模式中表格中的具體數據,也就是表格中的行和列。它是關系模式的一個具體實例,包括表格中的所有數據。關系實例可以通過SELECT語句來檢索和查詢。
例如,假設我們有一個關系模式為“學生(Student)”,包括學生編號(Student ID)、姓名(Name)、年齡(Age)和性別(Gender)等列。那么,關系實例就是表格中的具體數據,如學生編號為001、姓名為張三、年齡為20歲、性別為男性等。
1.3 數據庫模式和數據庫實例
數據庫模式(Database Schema)是數據庫的結構圖,它描述了數據庫中各個表、列、主鍵、外鍵等的結構和關系。也就是說,數據庫模式定義了數據庫中數據的邏輯結構,包括表格、關系、約束和索引等元素。它是一個靜態概念,不會發生變化,除非進行數據庫結構的修改。
Database schema (數據庫模式) – is the logical structure of the database
數據庫實例(Database Instance)是指在計算機內存中運行的數據庫,它是數據庫在運行時的狀態。也就是說,數據庫實例包含了數據庫中所有數據的副本以及處理這些數據的進程和線程。每個數據庫實例都有自己的內存空間和處理器資源,可以獨立地進行處理和管理。
Database instance (數據庫實例) – is a snapshot of the data in the database at a given instant in time.
2 數據庫組織形式
2.1 數據采用文件的缺點
1 獲得數據很困難,得為每一個潛在的程序寫代碼程序
Difficulty in accessing data
2 數據丟失或者不一致
Data redundancy and inconsistency
3 完整性問題
Integrity problem
4 并發訪問,或者操作到一半的時候可能會出現程序崩掉,這時候數據庫可能會把前面未完整執行的進行執行
Concurrent-access problem
5 安全訪問問題
Security problem
6 操作原子性問題
Atomicity problem
2.2 使用數據庫管理系統的 優點
主要是兩方面
? 便于查詢和修改數據
? 便于確定數據邏輯結構
? 支持大量數據
? 訪問控制
? 原子性操作
即事務是原子的。原子性是指事務中的所有操作被視為一個單獨、不可分割的操作,要么全部執行成功,要么全部失敗回滾,不會出現部分執行的情況。
這意味著,如果一個事務包含多個操作,如果其中任何一個操作失敗,整個事務就會回滾,回到原始狀態,所有的操作都會取消。這種方式可以確保數據的一致性和完整性,避免了數據損壞或錯誤的情況。
3 關系型數據庫特點
- 數據以表格(表)的形式存儲,其中每個表包含行和列,每個表有獨一無二的名稱
- 表之間可以建立關系,通過外鍵(foreign key)實現表之間的連接。
- 數據庫使用結構化查詢語言(SQL)進行查詢和操作。
- 關系型數據庫通常支持事務處理和數據完整性控制。
4 三個層次的數據抽象Data Abstraction
Logical level:users can see all tables and how they are related
比如數據表的組織方式
Physical level: describe how data is stored in a file.
比如某一個內容占據多少字節等等
View level: users can see the tables within the scope of their requirements and permissions.
比如教師可以看到教師的數據表,而學生只能看到學生的數據表
5 超鍵、候選碼、主碼、外碼
超鍵
在關系型數據庫中,**超鍵(Superkey)**是能夠唯一標識一個關系中元組的一組屬性集合。簡單來說,超鍵是可以唯一區分關系模式中不同元組的一組屬性。
超鍵具有以下特點:
- 超鍵必須是唯一的,即在關系模式中沒有兩個元組具有相同的超鍵值。
- 超鍵可以包含一個或多個屬性。
- 超鍵可以是候選鍵(Candidate Key)的超集,也可以是包含主鍵(Primary Key)的超鍵。
候選碼
? 最小的超鍵,可以有多個
主碼
? 從候選碼里選出來,唯一的一個 主碼是數據庫表中的一個字段或一組字段,用于唯一標識表中的每一行記錄。
主碼是數據庫表中唯一標識記錄的字段或字段集合,每個表只能有一個主碼。候選碼也是具有唯一性的字段或字段集合,但一個表可以有多個候選碼,其中一個通常會被選擇為主碼。主要區別在于主碼是表的主要標識符,而候選碼是備選的唯一標識符。
寫一個關系模式,將主鍵用下劃線畫出來,且一般在其他元素前
**
**
寫出他的關系模式
注意這里,用 兩個才能唯一區別building, room number同時畫下劃線
外碼
"參照關系"和"被參照關系"是用來描述表之間關系的術語,它們涉及到外碼(Foreign Key)和主碼(Primary Key)之間的聯系。以下是它們的解釋:
-
參照關系(Referencing Relationship):
- "參照關系"指的是包含外碼(Foreign Key)的表,該外碼引用另一張表的主碼(Primary Key)或候選碼(Candidate Key)。
- 在參照關系中,外碼字段存儲了關聯表的鍵值,它用于確立兩個表之間的關聯。
- 表示為:表A包含一個外碼字段,該字段引用了表B的主碼或候選碼,這時表A就與表B存在參照關系。
-
被參照關系(Referenced Relationship):
- "被參照關系"指的是包含主碼或候選碼的表,該表的鍵值被外碼字段引用,從而使其他表可以與它建立關聯。
- 在被參照關系中,一個表的主碼或候選碼通常被其他表的外碼引用,這表明它在其他表中作為關聯的目標。
- 表示為:表B的主碼或候選碼被表A的外碼引用,這時表B就與表A存在被參照關系。
例如,考慮以下兩個表:Customers(客戶)和Orders(訂單)。Customers 表的 CustomerID 字段是主碼,而 Orders 表的 CustomerID 字段是外碼。這種情況下:
- Customers 表是被參照關系表,因為它的主碼(CustomerID)被 Orders 表的外碼字段(CustomerID)引用,允許訂單表與客戶表建立關聯,以指示哪些客戶下了哪些訂單。
- Orders 表是參照關系表,因為它包含了外碼字段(CustomerID),該字段引用了客戶表的主碼(CustomerID),用于建立訂單表與客戶表之間的關聯。
總之,參照關系和被參照關系描述了表之間的關聯,外碼與主碼之間的關系非常重要,它們有助于維護數據完整性,并允許查詢和檢索相關數據
一個關系數據庫由多個表組成,每個表有自己獨一無二的名字
一個表通常內概念有 屬性,元組,分量
概念
屬性的域(domain):屬性允許的值的集合,比如年齡這個屬性,允許的值是正整數
r 的所有屬性的域都應該是原子的。什么原子的?域的元素被認為是不可分割的單元