關係模型和物件模型的究竟匹配還是不匹配?

2021-06-02 09:39:17 字數 945 閱讀 4630

引用

第一正規化:

1、內容相似的資料列必須消除(消除的辦法就是再建立乙個資料表來存放他們,建立關聯關係)

2、必須為每一組相關資料分別建立乙個表

3、每條資料記錄必須用乙個主鍵來標示

第二正規化:

1、只要資料列裡面的內容出現重複,就意味著應該把錶拆分為多個表

2、拆分形成的表必須用外來鍵關聯起來。

第三正規化:

1、與主鍵沒有直接關係的資料列必須消除(消除的辦法就是再建立乙個表來存放他們)

這三大正規化就像給orm的人如何設計資料庫寫的指南:

引用第一正規化:

1、每個持久物件對映一張表

2、每個持久物件必須有乙個主鍵

第二正規化:

1、持久物件要有內聚性,冗餘的內容拿出去,單獨建立持久物件

2、持久物件之間的關係用外來鍵關聯

第三正規化:

1、持久物件要有內聚性,無關的內容拿出去,單獨建立持久物件

關係模型和物件模型是不是在儲存概念上一致,就不用多說廢話了。

說關係模型和物件模型「阻抗不匹配」,當然是有不匹配的地方,比方說物件模型當中特有的「繼承」,「組合」,「聚合」,「依賴」的概念在關係模型當中是不存在的,但是這種模型的「阻抗不匹配」最終在儲存模型是還是能夠統一起來的,這就是orm的作用:

1、物件的繼承關係可以表達為三種不同的關係儲存模型:整個繼承數一張表;每個繼承層次一張表;每個物件一張表

2、物件的組合和聚合可以用主外來鍵關聯的表來儲存,它可以表達1:n,n:1和n:m的關係

3、物件的依賴關係和儲存無關,所以不需要orm做什麼。

所以結論就是這樣:

關係模型和物件模型存在概念上的阻抗不匹配,但是在關聯式資料庫的儲存模型上是一致的,無論你從關係模型的三大正規化理論出發,還是從物件模型的orm理論出發,最終一定會得到一致的資料庫表設計。

E R模型和關係模型

e r圖也稱實體 聯絡圖 entity relationship diagram 提供了表示實體型別 屬性和聯絡的方法,用來描述現實世界的概念模型。弱實體 weak entity 是一種資料庫系統術語。其定義為乙個實體對於另乙個實體 一般為強實體,也可以是依賴於其他強實體的弱實體 具有很強的依賴聯絡...

關係模型和關係運算

一 關係模型 為什麼學習關係模型?我們可以通過關係模型這種簡單的資料結構能夠描述出現實世界的實體及實體間的各種聯絡。什麼是關係模型?關係模型的基本假定是所有資料都表示為數學上的關係,就是以集合的形式表示。關係模型是採用二維 結構表達實體型別及實體間聯絡的資料模型。關係模型是1970年由e.f.cod...

物件關係模型 pony 參考

近期使用了python 的 orm pony,特記錄以下供參考 pony與其它的orm相比,可謂別具一格,顯得有點另類,主要以迭代器方式實現,寫起來覺得與sql無關,更像基本的純python 而且其官方文件清晰。一 使用pony的基本步驟 1.定義orm模型 from pony.orm import...