數(shù)據(jù)庫設計
數(shù)據(jù)庫設計(Database Design)是指對于一個給定的應用環(huán)境允蜈,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng)蒿柳,使之能夠有效地存儲數(shù)據(jù)饶套,滿足各種用戶的應用需求(信息要求和處理要求)。
數(shù)據(jù)庫設計是非常重要的垒探,舉個簡單的例子妓蛮,木犀課棧,如果你數(shù)據(jù)庫設計的不好圾叼,假如沒有儲存用戶評分蛤克,你就要建一個新的數(shù)據(jù)庫捺癞,而且還是數(shù)據(jù)庫表結(jié)構(gòu)不同,并且要數(shù)據(jù)遷移构挤,數(shù)據(jù)遷移已經(jīng)很麻煩了(ETL)髓介,遷移時,一般還要停用舊的數(shù)據(jù)庫筋现,那樣會影響用戶體驗唐础。
設計步驟
今天我們主要講設計概念結(jié)構(gòu)
(一)概念模型
1.0 特點
能真實、充分地反映現(xiàn)實世界矾飞,包括事物和事物之間的聯(lián)系存捺,能滿足用戶對數(shù)據(jù)的處理要求晋柱,是現(xiàn)實世界的一個真實模型缤苫。
易于理解挑势,可以用它和不熟悉計算機的用戶交換意見。用戶的積極參與是數(shù)據(jù)庫設計成功的關鍵申眼。
易于更改森篷,當應用環(huán)境和應用要求改變時容易對概念模型修改和打充。
易于向關系豺型、網(wǎng)狀仲智、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。
概念模型是各種數(shù)據(jù)模型的共同基礎姻氨,它比數(shù)據(jù)模型更獨立于機器钓辆、更抽象,從而更加穩(wěn)定肴焊。描述概念模型的有力工具是ER模型前联。
1.1收集信息
在創(chuàng)建數(shù)據(jù)庫之前,我們要充分理解數(shù)據(jù)庫需要完成的任務和功能娶眷。簡單的說似嗤,就是需要了解數(shù)據(jù)庫需要存儲哪些信息和數(shù)據(jù),要實現(xiàn)哪些功能届宠。(就是說烁落,miniproject你們要好 好和產(chǎn)品組的同學商量(battle)一下)以選課為例。
- 學生選課這個情景就是我們收集到的信息
1.2.1 實體(很重要)
數(shù)據(jù)模型中的數(shù)據(jù)對象豌注,可以理解為數(shù)據(jù)表伤塌。實體可以是有形的事物,比如說人或產(chǎn)品轧铁;也可能是無形的事物每聪,比如說課程等等。;通過“矩形框”表示實體型药薯,矩形框內(nèi)寫明實體 名稱绑洛。**
學生
課程
1.2.1屬性
實體所具有的屬性,可以理解為數(shù)據(jù)表中的字段童本;通過“橢圓圖框”表示實體的屬性真屯,并 用“實心線段”與“實體型”連接起來;屬性分為唯一和非唯一巾陕,唯一屬性(數(shù)據(jù)表中的主鍵)用下劃線表示讨跟。**
學生:學號纪他,姓名鄙煤,性別,專業(yè)
課程:編號茶袒,課名梯刚,老師,教室
1.3 如何區(qū)別實體和屬性
大家是不是認為這個很好區(qū)分薪寓?但是別忘了亡资,老師是一個具體的事物,但它也可以作為屬性向叉,而課程也可以作為屬性锥腻。只是看你的應用場合。
原則:為了簡化E-R圖的處置母谎,現(xiàn)實世界的事物能作為屬性對待的盡量作為屬性對待瘦黑。
-
準則:
作為屬性,不能再具有需要描述的性質(zhì)奇唤,即屬性必須是不可分的數(shù)據(jù)項幸斥,不能包含其他屬性。
屬性不能與其他實體具有聯(lián)系咬扇,即E-R圖中所表示的聯(lián)系是實體之間的聯(lián)系甲葬。
1.4 關系
數(shù)據(jù)對象與數(shù)據(jù)對象之間的聯(lián)系,可以理解為數(shù)據(jù)表與數(shù)據(jù)表之間的關系懈贺;通過”菱形框“表示實體型之間的關系经窖,在框內(nèi)寫明關系,并用”實心線段“與有關實體型連接起來梭灿,同時在”實心線段“旁標上聯(lián)系的類型(1:1,1:n或m:n)钠至。**
一對一聯(lián)系(1:1) 例如,一個部門有一個經(jīng)理胎源,而每個經(jīng)理只在一個部門任職棉钧,則部門與經(jīng)理的聯(lián)系是一對一的。
一對多聯(lián)系(1:N) 例如涕蚤,某校教師與課程之間存在一對多的聯(lián)系“教”宪卿,即每位教師可以教多門課程的诵,但是每門課程只能由一位教師來教。
多對多聯(lián)系(M:N) 例如佑钾,學生與課程間的聯(lián)系(“學”)是多對多的西疤,即一個學生可以學多門課程,而每門課程可以有多個學生來學休溶。
聯(lián)系也可能有屬性代赁。例如,學生“學”某門課程所取得的成績兽掰,既不是學生的屬性也不是課程的屬性芭碍。由于“成績”既依賴于某名特定的學生又依賴于某門特定的課程,所以它是學生與課程之間的聯(lián)系“學”的屬性孽尽。
- 選擇(擁有)
關系確認需要從正反兩個角度去思考窖壕,對于兩個實體集A和B,觀察A中的實體值在B中實體值的對應關系杉女,反之B中實體值在A中實體值的對應關系瞻讽,如果兩者得出的關系一致那就可以確認是這種關系了。例如教師-課程之間的關系熏挎,1位教師可以有N門課程速勇,但是每門課程就只有1位教師,從這個角度分析教師-課程之間是1:N的關系坎拐。
1.5 ER圖
1.5.1 例子
- 例如烦磁,職工是一個實體,職工號廉白、姓名个初、年齡是職工的屬性,職稱如果沒有與工資猴蹂、崗位津貼院溺、福利掛鉤,換句話說磅轻,沒有需要進一一步 描述的特性珍逸,則根據(jù)準則(1)可以作為職工實體的屬性;但如果不同的職稱有不同的工資、崗位津貼和不同的附加福利聋溜,則職稱作為一個實體看待就更恰當谆膳。
如果一種貨物只存放在一個倉庫中,那么就可以把存放貨物的倉庫的倉庫號作為描述貨物存放地點的屬性撮躁,但如果一種 貨物可以存放在多個倉庫中漱病,或者倉庫本身又用面積作為屬性,或者倉庫與職工發(fā)生管理上的聯(lián)系,那么就應把倉庫作為一個實體杨帽。
分析類之間的關系
2.1 類
類在UML中是一個基本的邏輯實體漓穿。它定義了一個結(jié)構(gòu)單元的數(shù)據(jù)和行為。一個類是一個模板或運行時創(chuàng)建實例和對象的模型注盈。
屬性:類似er圖的屬性晃危。
行為:對類的操作。
2.2 UML圖
構(gòu)建sql文檔
抽象數(shù)據(jù)庫設計->實例化
寫sql文檔
導入mysql:source sql文件的路徑
在哪寫
https://www.processon.com/(選擇uml圖文件)
數(shù)據(jù)庫系統(tǒng)概論
c