關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)則詳解
E-R(Entity-relationship,實(shí)體-聯(lián)系)模型中有三個(gè)主要概念是:實(shí)體集、屬性、聯(lián)系集。
一個(gè)實(shí)體集(class)對(duì)應(yīng)于數(shù)據(jù)庫中的一個(gè)表,一個(gè)實(shí)體(instance)則對(duì)應(yīng)數(shù)據(jù)庫表中的一行,也稱一條記錄。一個(gè)屬性對(duì)應(yīng)于數(shù)據(jù)庫表中的一列(column),也稱一個(gè)字段。
ORM思想(Object Relational Mapping)體現(xiàn):
數(shù)據(jù)庫表 ? Java或Python的一個(gè)類
表中的一條數(shù)據(jù) ? 類中的一個(gè)對(duì)象(或?qū)嶓w)
表中的一個(gè)類 ? 類中的一個(gè)字段、屬性(field)
表關(guān)系設(shè)計(jì)
表與表之間的數(shù)據(jù)記錄有關(guān)系(relationship)?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來表示。表關(guān)系的四種:
1、一對(duì)一關(guān)聯(lián)(one-to-one)
在實(shí)際的開發(fā)中應(yīng)用不多,因?yàn)橐粚?duì)一可以創(chuàng)建成一張表。
舉例:設(shè)計(jì)學(xué)生表
:學(xué)號(hào)、姓名、手機(jī)號(hào)碼、班級(jí)、系別、身份證號(hào)碼、家庭住址、籍貫、緊急聯(lián)系人、…
拆為兩個(gè)表:兩個(gè)表的記錄是一一對(duì)應(yīng)關(guān)系。
基礎(chǔ)信息表
(常用信息):學(xué)號(hào)、姓名、手機(jī)號(hào)碼、班級(jí)、系別檔案信息表
(不常用信息):學(xué)號(hào)、身份證號(hào)碼、家庭住址、籍貫、緊急聯(lián)系人、…兩種建表原則: 外鍵唯一:主表的主鍵和從表的外鍵(唯一),形成主外鍵關(guān)系,外鍵唯一。外鍵是主鍵:主表的主鍵和從表的主鍵,形成主外鍵關(guān)系。
2、一對(duì)多關(guān)系(one-to-many)
常見實(shí)例場(chǎng)景:客戶表和訂單表
,分類表和商品表
,部門表和員工表
。
舉例: 員工表:編號(hào)、姓名、…、所屬部門部門表:編號(hào)、名稱、簡介 一對(duì)多建表原則:在從表(多方)創(chuàng)建一個(gè)字段,字段作為外鍵指向主表(一方)的主鍵
3、多對(duì)多(many-to-many)
要表示多對(duì)多關(guān)系,必須創(chuàng)建第三個(gè)表,該表通常稱為聯(lián)接表
,它將多對(duì)多關(guān)系劃分為兩個(gè)一對(duì)多關(guān)系。將這兩個(gè)表的主鍵都插入到第三個(gè)表中。
舉例1:學(xué)生-課程
學(xué)生信息表
:一行代表一個(gè)學(xué)生的信息(學(xué)號(hào)、姓名、手機(jī)號(hào)碼、班級(jí)、系別…)
課程信息表
:一行代表一個(gè)課程的信息(課程編號(hào)、授課老師、簡介…)
選課信息表
:一個(gè)學(xué)生可以選多門課,一門課可以被多個(gè)學(xué)生選擇
學(xué)號(hào) 課程編號(hào) 1 1001 2 1001 1 1002
舉例2:產(chǎn)品-訂單
“訂單”表和“產(chǎn)品”表有一種多對(duì)多的關(guān)系,這種關(guān)系是通過與“訂單明細(xì)”表建立兩個(gè)一對(duì)多關(guān)系來定義的。一個(gè)訂單可以有多個(gè)產(chǎn)品,每個(gè)產(chǎn)品可以出現(xiàn)在多個(gè)訂單中。
產(chǎn)品表
:“產(chǎn)品”表中的每條記錄表示一個(gè)產(chǎn)品。訂單表
:“訂單”表中的每條記錄表示一個(gè)訂單。訂單明細(xì)表
:每個(gè)產(chǎn)品可以與“訂單”表中的多條記錄對(duì)應(yīng),即出現(xiàn)在多個(gè)訂單中。一個(gè)訂單可以與“產(chǎn)品”表中的多條記錄對(duì)應(yīng),即包含多個(gè)產(chǎn)品。
舉例3:用戶-角色
多對(duì)多關(guān)系建表原則:需要?jiǎng)?chuàng)建第三張表,中間表中至少兩個(gè)字段,這兩個(gè)字段分別作為外鍵指向各自一方的主鍵。
4、自我引用(Self reference)
到此這篇關(guān)于關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)規(guī)則詳解的文章就介紹到這了,更多相關(guān)關(guān)系型數(shù)據(jù)庫設(shè)計(jì)規(guī)則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用計(jì)算列實(shí)現(xiàn)移動(dòng)加權(quán)平均算法
昨天有人讓我?guī)兔憘€(gè)算移動(dòng)加權(quán)平均的SQL語句,我想了半天終于寫出來正確的了?,F(xiàn)在發(fā)出來供大家參考、討論。2009-09-09pgsql binlog監(jiān)聽功能點(diǎn)解析
這篇文章主要為大家介紹了pgsql binlog監(jiān)聽功能點(diǎn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02SQL查詢出表、存儲(chǔ)過程、觸發(fā)器的創(chuàng)建時(shí)間和最后修改時(shí)間示例
這篇文章主要介紹了SQL查詢出表、存儲(chǔ)過程、觸發(fā)器的創(chuàng)建時(shí)間和最后修改時(shí)間示例,本文直接給出代碼實(shí)例,需要的朋友可以參考下2015-06-06