關聯模型是在資料模型帖子中列出的邏輯資料模型中最受歡迎的,並且它是基於SQL資料庫的基礎。
關聯模型基於兩個簡單的概念:
- 表格
- 關聯
關聯模型可以追溯到1969年,當時英國計算機科學家Edgar F. Codd提出了這一概念。作為計算機程序員,我們習慣於關注新奇的事物,但一個能夠在計算機領域中持續50年的技術絕對值得學習。
模型基於表格的事實使其非常直觀易用,因為我們習慣於使用表格來組織事物。比如,想想Excel電子表格。
使用像PostgreSQL、Oracle、MySQL、SQLite和MS SQL Server等基於SQL的資料庫,可以使用關聯模型對使用ER模型分析的數據進行建模,並且幾乎可以立即將其轉換為SQL資料庫格式,這可以被視為關聯模型在現實世界中的實現,但我們將在其他帖子中討論這一點。
在這篇帖子中,我想探討的是關聯模型基於的理論和概念,不是用數學术语表達,而是在實踐中的含義。
如果你是一個學生,你可能會發現我在這裡寫的內容與你的教科書上的內容不一樣,但也許你可以通過閱讀這種更容易理解的方式來掌握在你的學習材料中表達的更正式的概念。
表格
在關聯模型中,表格是一組項目的集合。
它按行和列組織:
名稱 | 年齡 |
---|---|
Flavio | 36 |
Roger | 7 |
Syd | 6 |
元組
表中的每個項目稱為元組。您也可以使用記錄或行這些術語。
元組表示表的一行,如下所示:
Flavio | 36 |
屬性
屬性是元組中的一個單一項目。
在這個例子中:
Flavio | 36 |
“Flavio”是一個屬性。 36是另一個屬性。
元組是唯一的
表中的每個元組都是唯一的。
在關聯模型中,我們不能有重複的數據,這意味著表中的每一行在至少一個屬性上必須不同。
關聯鍵
確保元組唯一性的是關聯鍵。
關鍵是必須唯一識別元組的一個屬性。
如果關聯鍵是一組屬性,它必須是非冗餘的。這意味著如果我們刪除鍵的其中一個屬性,該鍵將無法確保其唯一性。
如果可以確定多於一個鍵,其中一個鍵將被識別為主鍵。
關鍵完整性約束
表中的任何元組的關鍵屬性不能為null,並且不能重複。
根據一個鍵,我們必須能夠指向一個特定的元組/行,而不會產生歧義。
域限制條件
每個屬性都有關於它可以包含的值的規則。
例如,如果我們決定存儲數字,就不能存儲字符串。我們還可能決定不存儲長於10個字符的字符串作為名稱。
我們也可以稱之為類型。
參考完整性約束
如果一個表包含對一個次要表或同一表中的其他元組的引用,那麼我們必須遵守規則,以防止引用的破壞。
特別是,我們必須避免以下情況破壞引用:
- 在其他表中,避免刪除或編輯我們指向的記錄的主鍵。
- 避免插入指向其他表中不存在的鍵的新記錄。
- 避免改變我們指向的記錄的鍵,而不確保新鍵存在於其他表中。
數據庫管理系統(DBMS)將實施措施來幫助我們實現參考完整性。