一、前言
在資料庫設計中,hibernate,ibatis等orm框架的使用中經常聽說主鍵,外來鍵,主表,從表,關聯表,父表,子表之類的術語,弄懂它們之前的區別與聯絡對於資料庫設計和orm框架的學習使用是非常有必要的。
二、概述
下面從資料庫設計角度,orm框架使用(以hibernate為例),powerdesigner軟體以及實際業務角度進行一下介紹。
(1) 資料庫角度而言
主鍵:一般情況下,滿足第一正規化的表都有乙個主鍵primary key,用於唯一標示資料庫中的乙個字段。
外來鍵:外來鍵是相對於資料庫設計中的參考完整性而言,它與主鍵之間是彼此依賴的關係。假設現在有兩個表,產品分類表productcategory(主鍵categoryid)和產品資訊表product(主鍵productid),每類產品都屬於乙個分類。那麼如果產品資訊表肯定需要參考產品分類表進行定義。因為如果沒有產品分類表,又何談產品分類呢。所以產品資訊表product需要引用productcategory中的主鍵categoryid 進行產品分類定義,product表中引用categoryid的字段就是外來鍵。
在概念模型(concept model)中,從產品分類角度看,產品分類和產品之間就是一對多的關係,乙個分類下可以有多個產品。從產品角度看,產品和產品分類之間是多對一的關係,多種產品屬於乙個分類。
關聯表:兩個資料庫及其(資料)表之間的資料的相互依賴和影響關係。
比如現有某學校三個資料表:學生(學號,姓名),課程(課程名,課程編號),選課(學號,課程 號,成績)。選課表中的「學號」,「課程號」必須是另外兩個表中存在的資料,才有意義;而且一旦另外兩表中的某一學生或課程被刪除,選課表中的相應學號或 課程號必須自動刪除。這就是一種關聯關係。它實際上是保證資料完整性的一種做法.
成績表中單一乙個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以 學號和課程號的屬性組是乙個主鍵
成績表中的學號不是成績表的主鍵,但它和學生表中的學號相對應,並且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外來鍵
其中,學生表和課程表都是主表,成績表為從表
父表,子表的說法其實在powerdesigner中解釋可能更加恰當,這裡就不多說了。
(2)從orm框架來看
hibernate的主表從表請參照:
關聯表: 在hibernate的關聯關係中,存在著多對多的關聯,但是實際情況下,我們是很少使用多對多關聯的,因為它的查詢效率很低(
舉個例子,乙個訂單可以訂多個產品,乙個產品也可以出現在多張訂單。很明顯,乙個多對多的關係,因為效率問題,我們必須將它分解成兩個1對多的關係,所以,必須新增乙個中間表,也就是關聯表,用來儲存兩個表的主鍵,從而實現多對多關係的分解。
(3)powerdesigner
乙個截圖,足以說明一切了,多的也不用舉例,上面的單詞相信大家還是可以看懂的。
(4)實際業務功能
關於這個業務功能,不多介紹了,從網上擷取了乙個不錯的例子,大家可以看一下,介紹的非常不錯。
班級:class 學生:student
class的表結構
id int identity,
name varchar
student
id int identity,
name varchar,
classid int refrence class ('id')
student 中classid引用class,乙個班級中可能有多個學生,那麼此時可以說class是主表,student是class的從表,從hibernate的角度看,student和class是乙個many-to-one的關係。
不過主表和從表是相對的,沒有絕對的,比如,老師和學生的關係,乙個老師有多個學生,乙個學生同時也有多個老師,這時如果以老師為主表,那學生就是從表,一學生為主表,那老師就是從表。
如何確定主表和從表?
則完全取決於業務,業務上的主體就是主表,比如軟體a是為老師而設計,用於管理學生的,那老師就是主表,軟體b是為家長設計,用於管理老師的,那學生就是主表。主表和從表沒有絕對,完全取決業務上的重心。
主表,從表,關聯表,父表,子表
一 前言 在資料庫設計中,hibernate,ibatis等orm框架的使用中經常聽說主鍵,外來鍵,主表,從表,關聯表,父表,子表之類的術語,弄懂它們之前的區別與聯絡對於資料庫設計和orm框架的學習使用是非常有必要的。二 概述 下面從資料庫設計角度,orm框架使用 以hibernate為例 powe...
主表,從表,關聯表,父表,子表
一 前言 在資料庫設計中,hibernate,ibatis等orm框架的使用中經常聽說主鍵,外來鍵,主表,從表,關聯表,父表,子表之類的術語,弄懂它們之前的區別與聯絡對於資料庫設計和orm框架的學習使用是非常有必要的。二 概述 下面從資料庫設計角度,orm框架使用 以hibernate為例 powe...
MySql主表關聯從表 設定從表條件 主表資料遺失
標題無法描述清楚 需求 查詢檔案分類 除檔案分類資訊外 增加其檔案數量列 如下問題 有的檔案分類下沒有檔案 而在where後的f.del flag 1條件會導致此檔案分類資料消失 select fc.id,fc.cate name,count f.id as file count from file...