關係型資料庫概要
rails的ORM用得有點多了,對於其底層封裝的關係型資料庫的記憶反而不是很清晰了,讓我們來重新回顧一下吧。有很多初學的同學可能對關係型資料庫有一些誤解,以為關係型資料庫就是mysql,其實不然,關係型資料庫是指一種關係模型,甚至可以認為是一種資料模型,mysql只是一種實現,還有pg等一大票資料庫的應用層實現。《資料庫系統概念》是一本好書,可惜囉裡八嗦說了好多晦澀的話,搞得我每次看了之後都會忘記所看過的東西,可能這就是學術的嚴謹性吧。在這裡,希望可以去粗取精,加深印象。
在關係模型的術語中,關係(relation)代表用來指代表,而元組(trule)用來指代行。類似地,屬性用來指代表中的列。對於某個關係中的每個屬性,都存在一個允許取值的集合,我們稱之為該屬性的域。比如在某一個關係中,存在一個屬性season,而這屬性的域就是[spring, summer, autumn, winter],這個屬性的取值就是隻能在這裡面四取一。這些概念其實在我們工作的時候常會混淆,區分好這些會利於我們的思維表達。
其次在我們討論資料庫的時候,我們必須區分好資料庫模式和資料庫例項的區別。前者是資料庫的邏輯設計,而後者是給定時刻資料庫中的資料的一個快照,通俗一點說,這個快照就是我們真實的資料,我們把這些資料按照我們所設計的模式存放。
好,繼續往前走,我們再來看看關係型資料庫中的key,這幾種key分別是主鍵,候選鍵,和超鍵。首先,超鍵是一個或者多個屬性的集合,這些屬性的組合可以使我們在一個關係中唯一地標識一個元組。比如,某一個描述學校組織的關係中,ID屬性足以將不同的教師元組區別開來。因此,ID是一個超碼,另一方面,name屬性卻不是一個超碼,因為有幾個老師可能重名。然而,超碼中可能會包含一下一些無關緊要的屬性,比如說,ID和Name的集合也是一個超碼,但是name這個屬性確實冗餘的,去掉冗餘屬性之後的最小超碼稱為候選碼。現在,主鍵的含義很明顯了,他就是用來標示某個元組在它所存在的關係中是是唯一的。
一個關係模式(r1)可能在它的屬性中包含另一個關係模式(r2)的主鍵,這個屬性在r1上被稱為外來鍵,關係r1被稱為外碼依賴的參照關係,r2叫做外碼的被參照關係。參照完整性約束要求在參照關係中任意元組在外來鍵取值上的取值必然等於被參照關係中主鍵取值。
相關文章
- 關係型資料庫與非關係型資料庫介紹!資料庫
- NoSQL:從關係型資料庫到非關係型資料庫SQL資料庫
- 關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫的區別資料庫
- PostgreSQL關係型資料庫SQL資料庫
- 關係型資料庫原理資料庫
- 關係型資料庫,何以稱為“關係”資料庫
- 關係型資料庫和非關係型資料庫的簡單對比資料庫
- OO資料庫和關係型資料庫資料庫
- 非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解資料庫SQL
- 關係型資料庫之SQL資料庫SQL
- 關係型資料庫之索引資料庫索引
- 關係型資料庫的理解資料庫
- 關係型資料庫理論資料庫
- 非關係型資料庫:Cassandra資料庫
- redis—非關係型資料庫Redis資料庫
- 資料庫入門之3張表對比關係型與非關係型資料庫資料庫
- 關係型資料庫和非關係型資料庫介紹及優劣勢比較資料庫
- NoSQL資料庫探討 -- 非關係型資料庫SQL資料庫
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- mysqlclient操作MySQL關係型資料庫MySqlclient資料庫
- FastAPI(44)- 操作關係型資料庫ASTAPI資料庫
- Node MySQL打造關係型資料庫MySql資料庫
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 平時常見關係型資料庫資料庫
- 聊聊非關係型資料庫MongoDB索引資料庫MongoDB索引
- 反DDD模式之關係型資料庫模式資料庫
- 列舉常見的關係型資料庫和非關係型都有那些?資料庫
- 關係型資料庫:使用正規化建立資料庫(轉)資料庫
- 關係型和非關係型資料庫一定要對立?達夢資料提供新思路資料庫
- 雲關係型資料庫(Relational Database Service,RDS)資料庫Database
- nodejs之MongoDB 非關係型資料庫NodeJSMongoDB資料庫
- MapReduce 與 關係型資料庫的區別資料庫
- 關係型資料庫分庫分表系列之一資料庫
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- MYSQL資料庫型別與JAVA型別對應關係MySql資料庫型別Java
- 關係型資料庫和NOSQL資料庫的優缺點介紹資料庫SQL