關聯模型


關聯模型 (简体)

Free Web Hosting with Website Builder

用於資料庫管理的關聯模型是基於謂詞邏輯集合論的一種資料模型。

目錄

模型

關聯模型的基本假定是所有資料都表示為數學上的關聯,就是說n集合笛卡兒積的一個子集,有關這種資料的推理通過二值(就是說沒有NULL)的謂詞邏輯來進行, 這意味著對每個命題都沒有兩種可能的求值: 要麼是真要麼是假。資料通過關聯演算關聯代數的一種方式來操作。

關聯模型允許設計者通過資料庫規範化的提煉,去建立一個信息的一致性的模型。訪問計劃和其他實現與操作細節由DBMS引擎來處理,而不應該反映在邏輯模型中。這與SQL DBMS普遍的實踐是對立的,在它們那裡性能調整經常需要改變邏輯模型。

基本的關聯建造塊是或者叫資料類型元組是屬性的有序多集(multiset),屬性是域和值的有序對。關聯變數(relvar)是域和名字的有序對(序偶)的集合,它充當關聯的表頭(header)。關聯是元組的集合。儘管這些關聯概念是數學上的定義的,它們可以寬鬆的映射到傳統資料庫概念上。表是關聯的公認的可視表示;元組類似於的概念。

關聯模型的基本原理是信息原理: 所有信息都表示為關聯中的資料值。所以,關聯變數在設計時刻是相互無關聯的: 反而,設計者在多個關聯變數中使用相同的,如果一個屬性依賴於另一個屬性,則通過參照完整性來強制這種依賴性。

競爭者

其他模型還有層次模型和網狀模型。使用這些舊體系的一些系統現在仍在一些資料中心中使用,那裡有高資料容量需求或者現存系統複雜得使遷移到採用關聯模型的系統花費巨大;還要注意新的物件導向資料庫,儘管它們中很多都是DBMS構造工具,而不是嚴格的DBMS

關聯模型是第一個形式化的資料庫模型。在它被定義之後,非形式化模型被用做描述描述層次資料庫(層次模型)和網狀資料庫(網狀模型)。層次和網狀資料在關聯資料庫之前就存在了,但是只在關聯模型被定義之後才作為模型來描述,用來建立比較的基礎。

歷史

關聯模型是由埃德加·科德博士作為資料的一般模型而發明的,隨後由克里斯多佛·戴特(Christopher J. Date)和休·達溫(Hugh Darwen)等人維護和開發。在第三次宣言(1995年)中他們展示了如何向關聯模型擴展上物件導向特徵而不用妥協它的基本原理。

SQL標準與關聯模型

SQL最初作為關聯資料庫標準語言而提出,而在實際上總是違背它。所以SQL DBMS實際上不是真正的RDBMS,並且當前ISO SQL標準不提及關聯模型或者使用關聯術語或概念。

實現

已經有很多嘗試去生成埃德加·科德、克里斯多佛·戴特、休·達溫等人開發的關聯資料庫模型的真正實現。但都沒有獲得流行性成功。Rel是其中最新的嘗試之一。SQL使用概念"表"、"列"和"行"來替代"關聯變數"、"屬性"和"元組"。

爭論

科德自己提議了關聯模型的一個三值邏輯版本,而且四值邏輯版本也被提議了,用來處理缺失信息。但是這些都未被實現,大概是由於顧及到了複雜性。SQL NULL意圖成為三值邏輯系統的一部分,但是由於在標準和它的實現中的邏輯上的錯誤而沒有達到目標。

設計

資料庫規範化通常在設計關聯資料庫時進行,用來增進資料庫設計的邏輯上的一致性和事務處理性能。

有兩種常用的模式圖系統來輔助關聯模型的可視表示: 實體-聯繫模式圖(實體關聯圖),和美國空軍在ERD基礎上建立的IDEF1X方法中所使用的關聯IDEF模式圖。

樣例資料庫

一些關聯變數和它們的屬性的一個理想化和非常簡單的例子:

Customer(Customer ID, Tax ID, Name, Address, City, State, Zip, Phone)

Order(Order No, Customer ID, Invoice No, Date Placed, Date Promised, Terms, Status)

Order Line(Order No, Order Line No, Product Code, Qty)

Invoice(Invoice No, Customer ID, Order No, Date, Status)

Invoice Line(Invoice No, Line No, Product Code, Qty Shipped)

Product(Product Code, Product Description)

在這個設計中我們有六個關聯變數: Customer, Product, Order, Order Line, Invoice, 和 Invoice Line. 粗體字有下劃線的屬性是候選鍵(碼)。非粗體字有下劃線的屬性是外鍵(碼)

通常任意選擇一個候選鍵 (碼)叫做主鍵 (碼)並且優先於其他候選鍵(碼),它們也就被叫做可選鍵 (碼)。

候選鍵(碼)是強制元組不重複的唯一性標識符;否則關聯就違背了集合的基本定義而成為是叫做包的東西了。鍵 (碼)可以是複合的,就是說可以由多個屬性組合而成。下面是我們的例子顧客關聯變數的一個表格化描述;關聯可以被認為是歸結到一個關聯變數的值。

集合理論公式

關聯模型中的基本概念是關聯名字屬性名字。我們通常把他們表示為如「Person」和「name」這樣的字元串,並且我們通常使用變數rst、……和abc來涉及它們。另一個基本概念原子值的集合包含著如數值和字元串這樣的值。

我們的第一個定義關注元組的概念,它是表格中行或記錄的概念的形式化。

定義元組是從一組屬性名字到一組原子值的偏函數
定義表頭是屬性名字的有限集合。
定義元組t在屬性的有限集合A上的投影t[A] = { (a, v) : (a, v) ∈ t, aA }。

下一個定義定義了關聯,它是關聯模型中對錶格內容的形式化。

定義關聯是帶有表頭H和表體B的一個元組(H, B),表體是都有域H的元組的集合。

這種關聯緊密的對應于在一階邏輯中通常叫做謂詞外延的東西,除了我們這裡用屬性名字標識在謂詞中的位置之外。在關聯模型中資料庫模式是由一組關聯名字,與這些名字相關聯的表頭,和在資料庫模式的每個實例上保持的約束構成的。

定義在表頭H上的關聯全集 U是有表頭H的關聯的非空集合。
定義關聯模式(H, C)由表頭H和對有表頭H的所有關聯R定義的謂詞C(R)構成。
定義 如果關聯有表頭 H 並滿足 C 則它滿足關聯模式(H, C)。

鍵(碼)約束和函數依賴

最簡單和最重要的一類關聯約束是鍵(碼)約束。它告訴我們在特定關聯模式的所有實例中元組可以通過它特定屬性的值來標識。

定義 超鍵(碼)被寫為屬性名字的有限集合。
定義 超鍵(碼) K 在關聯(H, B)中保持,條件是 KH 並且在 B 中沒有兩個不同的元組 t1t2 使 t1[K] = t2[K]。
定義 超鍵(碼)在表頭 H 之上的關聯全集 U 中保持,條件是它在 U 中的所有關聯中保持。
定義 超鍵(碼) K 保持為在 H 之上的關聯全集 U 的一個候選鍵(碼),條件是它保持為 U 的超鍵(碼)並且沒有 K真子集也保持為 U 的超鍵(碼)。
定義 函數依賴(簡寫為 FD)被寫為 X->YXY 是屬性名字的有限集合。
定義 函數依賴 X->Y 在關聯(H, B)中保持,條件是 XYH 的子集並且對於在 B 中所有的元組 t1t2 使得如果 t1[X] = t2[X] 則 't1[Y] = t2[Y]。
定義 函數依賴 X->Y 在表頭 H 之上的關聯全集 U 中保持,條件是它在 U 中的所有關聯中保持。
定義 函數依賴在表頭 H 下是不證自明的,條件是它在 H 下的所有關聯全集中保持。
定理 FD X->Y 在表頭 H 下是不證自明的,若且唯若 YXH
定理 超鍵(碼) KH 之上的關聯全集 U 中保持,若且唯若 KH 並且 K->HU 中保持。
定義(Armstrong 規則)S 是 FD 的集合,則 S 在表頭 H 下的閉包寫為 S+,它是 S 的符合如下規律的最小超集:
(自反律) 如果 YXH,則 X->YS+ 中。
(傳遞律) 如果 X->YS+ 中並且 Y->ZS+ 中,則 X->ZS+ 中。
(增廣律) 如果 X->YS+ 中並且 ZH,則 XZ -> YZS+ 中。
定理 Armstrong 規則是可靠的和完備的,就是說給定一個表頭 H 和只包含 H 的子集的 FD 集合 S,則 FD X->YS+ 中,若且唯若在它在 H 之上的其中所有的 S 中的 FD 都保持的所有的關聯全集中保持。
定義 如果 X 是屬性的有限集合併且 S 是 FD 的有限集合,則 XS 下的補集寫為 X+,它是符合如下規律的 X 的最小超集:
如果 Y->ZS 中並且 YX+ZX+

屬性集合的補集可以用來計算特定的依賴是否在 FD 集合的閉包中。

定理 給定表頭 H 和只包含 H 的子集的 FD 的集合 SX->Y 保持在 S+ 中,若且唯若 YX+
演算法(從FD 推導候選鍵(碼))
      INPUT: 只包含表头 H 的子集的 FD 的集合 S
      OUTPUT:H 之上的其中所有的 S 中的 FD 都保持的所有的关系全集中
                保持为候选键(码)的超键(码)的集合 C
      begin
        C := ∅;          // 找到的候选键(码)
        Q := { H };      // 包含候选键的超键(码)
        while Q <> ∅ doK 是来自 Q 的某个元素;
          Q := Q - { K };  
          minimal := true;
          for each X->Y in S do 
            K' := (K - Y) ∪ X;   // 推导新超键(码)
            if K' K
            then
              minimal := false;
              Q := Q ∪ { K' };
            fi
          od
          if minimal and 没有K 的子集在 CthenC 中去除 K 的所有超集;
            C := C ∪ { K };
          fi
        od
      end
定義 給定表頭 H 和只包含 H 的子集的 FD 的集合 SS不可簡約覆蓋是符合如下規律的 FD 的集合 T
  1. S+ = T+
  2. 沒有T 的真子集 U 使 S+ = U+
  3. 如果 X->YT 中則 Y 是單元素(singleton)集合併且
  4. 如果 X->YT 中並且 ZX 的真子集則 Z->Y 不在 S+ 中。

參見

  • Tuple-versioning

引用

  • Codd, E. F. (1970). "A relational model of data for large shared data banks". Communications of the ACM, , Vol. 13, No. 6, pp. 377-387. Retrieved from http://www.acm.org/classics/nov95/toc.html Sept. 4, 2004.
  • Date, C. J., Darwen, H. (2000). "Foundation for Future Database Systems: The Third Manifesto", 2nd Edn. Addison-Wesley.
  • Date, Christopher J. (2003). "Introduction to Database Systems". 8th ed.

外部連接


資料庫管理系統(DBMS)檢視  討論  編輯  歷史 )

概念
資料庫 • 資料庫模型 • 資料庫儲存結構 • 關聯模型 • 分散式資料庫 • ACID • NULL值
關聯資料庫 • 關聯代數 • 關聯演算 • 資料庫正規化 • 參照完整性 • 關聯資料庫管理系統 
主鍵 • 外來鍵 • 代理主鍵 • 超鍵值 • 候選鍵 

資料庫物件
觸發程序 • 檢視表 • 資料表 • 指標 • 交易記錄檔 • 交易 • 資料庫索引 
預存程序 • 資料庫分割

SQL
分類:資料定義語言 • 資料操縱語言 • 資料控制語言
指令:SELECT • INSERT • UPDATE • MERGE • DELETE • JOIN • UNION • CREATE • DROP • Begin work • COMMIT • ROLLBACK • TRUNCATE • ALTER
安全: SQL Injection • 參數化查詢

資料庫管理系統的實施

實施類型
關聯式資料庫 • 檔案型資料庫 • Deductive • 維度化資料庫 • 階層式 • 對象資料庫 • 物件關聯式資料庫 • Temporal • XML資料庫

資料庫產品
對象型 (對比) • 關聯型 (對比)

資料庫成分
查詢語言 • 查詢優化器 • 查詢計劃 • ODBC • JDBC • OLE DB







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History