據(jù)庫原理作業(yè)解析:ERM高級(jí)數(shù)據(jù)模型與ER圖設(shè)計(jì)避坑指南)
簡(jiǎn)介這份資源是西南交通大學(xué)《數(shù)據(jù)庫原理》課程第2章「高級(jí)數(shù)據(jù)模型」的作業(yè)文檔面向正在學(xué)習(xí)數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)的高校學(xué)生尤其適合需要鞏固ER模型、關(guān)系模型與約束概念的學(xué)習(xí)者。文檔圍繞ERM所屬層次、數(shù)據(jù)操縱缺失原因、實(shí)體與聯(lián)系的描述方式、主鍵與候選鍵區(qū)別、鍵約束的適用場(chǎng)景、1:1/1:n/m:n聯(lián)系主鍵確定方法以及弱實(shí)體識(shí)別等核心知識(shí)點(diǎn)展開并配有改錯(cuò)題與兩道綜合建模題要求根據(jù)商店、商品、職工及超市公司業(yè)務(wù)規(guī)則繪制ER圖并標(biāo)注約束類型。資源包共1個(gè)docx文件約99KB內(nèi)容為可直接參考的作業(yè)解析與答題思路涵蓋簡(jiǎn)答、改錯(cuò)、綜合與學(xué)習(xí)體會(huì)四類題型。目前已有857人學(xué)習(xí)下載適合作為章節(jié)復(fù)習(xí)、作業(yè)對(duì)照與考前查漏補(bǔ)缺的輔助材料。1. 從一份被標(biāo)“拷貝記零分”的作業(yè)說起高級(jí)數(shù)據(jù)模型到底在考什么西南交通大學(xué)《數(shù)據(jù)庫原理》第二章這份作業(yè)卷頭就寫著“拷貝者與被拷貝者本次作業(yè)記零分”說明它不是隨便水過去的課后練習(xí)而是概念設(shè)計(jì)階段的一次硬核自測(cè)。整份作業(yè)圍繞高級(jí)數(shù)據(jù)模型展開核心是 ERM實(shí)體聯(lián)系模型——它屬于高級(jí)數(shù)據(jù)模型用于概念設(shè)計(jì)階段描述現(xiàn)實(shí)世界的數(shù)據(jù)模式而關(guān)系模型屬于邏輯數(shù)據(jù)模型負(fù)責(zé)后續(xù)的表結(jié)構(gòu)落地。作業(yè)分四塊簡(jiǎn)答題 40 分、改錯(cuò)題 6 分、綜合題 44 分、體會(huì) 10 分其中綜合題明確要求用 Word 或 Visio 畫 ER 圖禁止紙質(zhì)手繪拍照。這份資源適合正在學(xué)數(shù)據(jù)庫原理、被 ER 圖約束類型和弱實(shí)體繞暈的本科生也適合想回頭補(bǔ)概念設(shè)計(jì)基本功的從業(yè)者。它解決的不是“怎么建表”而是“建表之前怎么把業(yè)務(wù)規(guī)則翻譯成實(shí)體、聯(lián)系和約束”。2. 簡(jiǎn)答題里的十個(gè)概念ERM 的骨架與主鍵判定規(guī)則2.1 為什么 ERM 沒有數(shù)據(jù)操縱關(guān)系模型卻有作業(yè)第一題問 ERM 屬于哪個(gè)層次答案是高級(jí)數(shù)據(jù)模型關(guān)系模型屬于邏輯數(shù)據(jù)模型。第二題緊接著問 ERM 為何沒有數(shù)據(jù)操縱內(nèi)容答案很干脆ERM 是高級(jí)設(shè)計(jì)模型在概念設(shè)計(jì)階段用于描述數(shù)據(jù)模式。這里有個(gè)容易翻車的點(diǎn)——很多人把“高級(jí)”理解成“更厲害”其實(shí)在數(shù)據(jù)庫三層模型里高級(jí)指的是抽象層次高、離物理實(shí)現(xiàn)遠(yuǎn)。ERM 只回答“有哪些實(shí)體、它們?cè)趺绰?lián)系”不回答“怎么查、怎么插、怎么刪”。數(shù)據(jù)操縱是關(guān)系模型及之后的事。所以做概念設(shè)計(jì)時(shí)不要提前操心索引、事務(wù)和 SQL那是邏輯設(shè)計(jì)和物理設(shè)計(jì)的活。把 ERM 當(dāng)黑匣子用輸入業(yè)務(wù)規(guī)則輸出實(shí)體聯(lián)系圖別越界。2.2 實(shí)體、聯(lián)系、屬性、鍵四個(gè)基礎(chǔ)件的分工第三題問現(xiàn)實(shí)系統(tǒng)中的數(shù)據(jù)本身和數(shù)據(jù)聯(lián)系分別用什么描述。數(shù)據(jù)用實(shí)體和實(shí)體型描述數(shù)據(jù)聯(lián)系用聯(lián)系和聯(lián)系型描述。實(shí)體是具體對(duì)象實(shí)體型是同類對(duì)象的集合定義比如“商店”這個(gè)實(shí)體型下可以有“一號(hào)店”“二號(hào)店”。聯(lián)系同理“銷售”是聯(lián)系型某商店銷售某商品是聯(lián)系實(shí)例。第四題問實(shí)體用什么唯一標(biāo)識(shí)答案是主鍵 primary key。第五題問 ERM 可描述的約束類型答案包括一般性約束1:1、1:n、m:n、鍵約束1:1、1:n和參與約束。這三類約束是后面綜合題畫圖的評(píng)分重點(diǎn)漏一個(gè)就丟分。第六題把屬性按結(jié)構(gòu)和取值各分了幾類按結(jié)構(gòu)分簡(jiǎn)單屬性、復(fù)合屬性、子屬性按取值分單值屬性、多值屬性、導(dǎo)出屬性、空值屬性。復(fù)合屬性和子屬性的區(qū)別常被混淆——復(fù)合屬性是多個(gè)簡(jiǎn)單屬性組合成一個(gè)有意義的整體比如“地址”由省、市、街道組成子屬性是復(fù)合屬性拆出來的那一部分。多值屬性比如“電話號(hào)碼”一個(gè)人可以有多個(gè)導(dǎo)出屬性比如“年齡”可由出生日期算出。2.3 鍵與候選鍵的區(qū)別以及三種聯(lián)系的主鍵怎么定第七題是簡(jiǎn)答題里最容易答偏的鍵與候選鍵的區(qū)別。鍵并不要求一定是最小屬性集而候選鍵要求的是最小屬性集不允許有冗余屬性。換句話說候選鍵一定是鍵但鍵不一定是候選鍵。第八題問鍵約束的用處和存在條件鍵約束用于唯一確定聯(lián)系一對(duì)一和一對(duì)多的情況下才存在鍵約束。多對(duì)多沒有鍵約束因?yàn)槿魏我环降闹麈I都無法單獨(dú)唯一確定一條聯(lián)系實(shí)例。第九題把三種聯(lián)系的主鍵判定規(guī)則串起來1:1 聯(lián)系主鍵可取關(guān)聯(lián)的任意實(shí)體的主鍵獨(dú)立擔(dān)當(dāng)1:n 聯(lián)系主鍵只需由 n 方實(shí)體的主鍵擔(dān)當(dāng)m:n 聯(lián)系主鍵必須由關(guān)聯(lián)的所有實(shí)體的主鍵共同組成。這條規(guī)則在綜合題畫 ER 圖時(shí)直接決定聯(lián)系菱形框里標(biāo)什么。我一般會(huì)讓學(xué)生先判斷聯(lián)系類型再套這三句話基本不會(huì)錯(cuò)。2.4 弱實(shí)體產(chǎn)生、避免與識(shí)別第十題問弱實(shí)體如何產(chǎn)生、如何避免、如何識(shí)別并要求舉例。弱實(shí)體由于系統(tǒng)內(nèi)某些實(shí)體沒有鍵屬性而形成。避免的辦法是在命名或編號(hào)弱實(shí)體時(shí)加上其隸屬關(guān)系上層實(shí)體的表示。識(shí)別時(shí)使用識(shí)別實(shí)體型和識(shí)別聯(lián)系。作業(yè)給的例子很典型本地電話號(hào)碼未加區(qū)號(hào)無法唯一標(biāo)識(shí)某人在某個(gè)隊(duì)列中的排序序號(hào)離開隊(duì)列就沒有意義。弱實(shí)體在 ER 圖里用雙邊矩形表示識(shí)別聯(lián)系用雙邊菱形表示。很多同學(xué)畫圖時(shí)把弱實(shí)體畫成普通實(shí)體導(dǎo)致主鍵缺失這是綜合題失分的高頻點(diǎn)。記住一句話弱實(shí)體不能獨(dú)立存在它的主鍵必須包含所屬?gòu)?qiáng)實(shí)體的主鍵。3. 改錯(cuò)題與綜合題把業(yè)務(wù)規(guī)則翻譯成 ER 圖的完整推演3.1 改錯(cuò)題三句話每句都是一個(gè)易混點(diǎn)改錯(cuò)題只有三小題但每句都踩在概念邊界上。第一句“主鍵是候選鍵之一部分組成”劃線部分應(yīng)改為“的其中一個(gè)”。主鍵是從候選鍵中選定的一個(gè)不是候選鍵的一部分。第二句“同一實(shí)體型不可能存在聯(lián)系”應(yīng)改為“可能”。同一實(shí)體型內(nèi)部可以有聯(lián)系比如“職工”實(shí)體型內(nèi)部的“領(lǐng)導(dǎo)”聯(lián)系一個(gè)職工領(lǐng)導(dǎo)另一個(gè)職工。第三句“ER 模型中聯(lián)系的主鍵由所參與實(shí)體的一般屬性決定”應(yīng)改為“所參與實(shí)體的唯一標(biāo)識(shí)”。聯(lián)系的主鍵來自參與實(shí)體的主鍵不是隨便什么屬性。這三處改錯(cuò)對(duì)應(yīng)三個(gè)高頻誤解主鍵與候選鍵關(guān)系、自聯(lián)系、聯(lián)系主鍵來源。把這三點(diǎn)吃透簡(jiǎn)答題和綜合題都會(huì)順很多。3.2 綜合題第一題商店、商品、職工的三元 ER 圖第一題給三個(gè)實(shí)體集商店商店編號(hào)、商店名、地址、商品商品號(hào)、商品名、規(guī)格、單價(jià)、職工職工編號(hào)、姓名、性別、業(yè)績(jī)。商店與商品之間存在“銷售”聯(lián)系每個(gè)商店可銷售多種商品每種商品也可放在多個(gè)商店銷售每個(gè)商店銷售每一種商品有月銷售量。商店與職工之間存在“聘用”聯(lián)系每個(gè)商店有許多職工每個(gè)職工只能在一個(gè)商店工作商店聘用職工有聘期和月薪。先判聯(lián)系類型商店與商品是多對(duì)多因?yàn)殡p方都是“多個(gè)”商店與職工是一對(duì)多因?yàn)樯痰甓耸恰霸S多”職工端是“只能在一個(gè)”。再定聯(lián)系主鍵“銷售”是 m:n主鍵由商店編號(hào)和商品號(hào)共同組成“聘用”是 1:n主鍵由 n 方即職工編號(hào)擔(dān)當(dāng)。最后標(biāo)屬性月銷售量掛在“銷售”聯(lián)系上聘期和月薪掛在“聘用”聯(lián)系上。畫圖時(shí)用矩形表示實(shí)體菱形表示聯(lián)系橢圓表示屬性聯(lián)系兩端標(biāo) 1、n、m。注意作業(yè)要求用 Word 或 Visio禁止手繪拍照所以線要拉直標(biāo)注要清晰。3.3 綜合題第二題超市公司業(yè)務(wù)規(guī)則的 ER 建模第二題給的是超市公司業(yè)務(wù)管理規(guī)則信息稍粗要求按規(guī)則設(shè)計(jì) ER 模型實(shí)體屬性可不必畫出但須根據(jù)生活中正常情況確定聯(lián)系的約束類型。規(guī)則有五條公司有若干倉(cāng)庫、若干連鎖商店、供應(yīng)若干商品每個(gè)商店有一個(gè)經(jīng)理和若干收銀員每個(gè)收銀員只在一個(gè)商店工作每個(gè)商店銷售多種商品每種商品可在不同商店銷售每個(gè)商品編號(hào)只有一個(gè)商品名稱但不同商品編號(hào)可以有相同商品名稱每種商品可以有多種銷售價(jià)格業(yè)務(wù)員負(fù)責(zé)商品的進(jìn)貨業(yè)務(wù)。逐條翻譯倉(cāng)庫與商品是供應(yīng)聯(lián)系多對(duì)多商店與經(jīng)理是一對(duì)一因?yàn)椤耙粋€(gè)經(jīng)理”商店與收銀員是一對(duì)多因?yàn)椤叭舾墒浙y員”且“只在一個(gè)商店工作”商店與商品是銷售聯(lián)系多對(duì)多商品編號(hào)與商品名稱是函數(shù)依賴商品與銷售價(jià)格是一對(duì)多因?yàn)椤岸喾N銷售價(jià)格”業(yè)務(wù)員與商品是進(jìn)貨聯(lián)系多對(duì)多。這里有個(gè)坑規(guī)則說“每個(gè)商品編號(hào)只有一個(gè)商品名稱”但“不同商品編號(hào)可以有相同商品名稱”說明商品編號(hào)是主鍵商品名稱不是候選鍵。畫圖時(shí)把商品編號(hào)作為商品實(shí)體的主鍵銷售價(jià)格作為多值屬性或單獨(dú)實(shí)體取決于是否要保留價(jià)格歷史。常見做法是把銷售價(jià)格建成弱實(shí)體依賴商品編號(hào)和商店編號(hào)。3.4 從規(guī)則到圖的檢查清單畫完 ER 圖后按這份清單過一遍每個(gè)實(shí)體是否有主鍵每個(gè)聯(lián)系是否標(biāo)了約束類型m:n 聯(lián)系的主鍵是否由所有參與實(shí)體主鍵組成1:n 聯(lián)系的主鍵是否由 n 方主鍵擔(dān)當(dāng)1:1 聯(lián)系的主鍵是否取了任意一方弱實(shí)體是否用雙邊矩形且主鍵包含強(qiáng)實(shí)體主鍵多值屬性是否用雙橢圓導(dǎo)出屬性是否用虛線橢圓。這份清單能擋住綜合題 80% 的失分點(diǎn)。作業(yè)里綜合題占 44 分第一題 27 分、第二題 17 分畫圖工具用錯(cuò)或約束漏標(biāo)扣分很狠。4. 避坑與排查這份作業(yè)里最容易翻車的五個(gè)地方4.1 把 ERM 當(dāng)關(guān)系模型提前畫表現(xiàn)象一上來就畫表格把實(shí)體直接寫成列聯(lián)系用外鍵表示。原因混淆了概念設(shè)計(jì)和邏輯設(shè)計(jì)。ERM 屬于高級(jí)數(shù)據(jù)模型輸出的是實(shí)體聯(lián)系圖不是表結(jié)構(gòu)。解決先畫矩形、菱形、橢圓確認(rèn)實(shí)體、聯(lián)系、屬性、約束都對(duì)了再考慮轉(zhuǎn)關(guān)系模式。作業(yè)簡(jiǎn)答題第一題就考這個(gè)層次區(qū)分畫錯(cuò)方向直接丟分。4.2 聯(lián)系主鍵判定套錯(cuò)規(guī)則現(xiàn)象m:n 聯(lián)系只取一方主鍵或者 1:n 聯(lián)系把雙方主鍵都塞進(jìn)去。原因沒記牢第九題的規(guī)則。解決背三句話——1:1 取任意一方1:n 取 n 方m:n 取所有參與方。套之前先判聯(lián)系類型判錯(cuò)類型規(guī)則全錯(cuò)。綜合題第一題的“銷售”是 m:n主鍵必須是商店編號(hào)加商品號(hào)少一個(gè)都不唯一。4.3 弱實(shí)體畫成普通實(shí)體現(xiàn)象弱實(shí)體用單邊矩形主鍵只寫自己的屬性。原因沒理解弱實(shí)體的識(shí)別依賴。解決弱實(shí)體用雙邊矩形識(shí)別聯(lián)系用雙邊菱形主鍵必須包含所屬?gòu)?qiáng)實(shí)體的主鍵。作業(yè)第十題舉的本地電話號(hào)碼例子沒有區(qū)號(hào)就無法唯一標(biāo)識(shí)畫圖時(shí)區(qū)號(hào)必須進(jìn)主鍵。4.4 屬性分類混淆復(fù)合屬性與子屬性分不清現(xiàn)象把“地址”拆成省、市、街道后把省標(biāo)成子屬性把地址標(biāo)成復(fù)合屬性但關(guān)系畫反。原因復(fù)合屬性是整體子屬性是部分。解決復(fù)合屬性用橢圓連到實(shí)體子屬性用橢圓連到復(fù)合屬性。多值屬性用雙橢圓導(dǎo)出屬性用虛線橢圓。第六題考的就是這個(gè)分類畫圖時(shí)標(biāo)錯(cuò)符號(hào)會(huì)扣分。4.5 畫圖工具不合規(guī)手繪拍照現(xiàn)象用紙畫完拍照貼進(jìn) Word。原因沒注意作業(yè)注明的“禁止紙質(zhì)手繪拍照須用 Word/Visio 或其它軟件工具畫出”。解決用 Word 的繪圖工具、Visio、Draw.io 或 ProcessOn 都行導(dǎo)出圖片插入文檔。線要直標(biāo)注要清楚別讓老師猜。這一條是硬性要求違反直接扣分。5. 進(jìn)階技巧用函數(shù)依賴反推候選鍵再用 ER 圖驗(yàn)證5.1 從業(yè)務(wù)規(guī)則里抽函數(shù)依賴綜合題第二題規(guī)則第四條說“每個(gè)商品編號(hào)只有一個(gè)商品名稱但不同的商品編號(hào)可以有相同的商品名稱”。這句話翻譯成函數(shù)依賴是商品編號(hào) → 商品名稱。反過來商品名稱 → 商品編號(hào)不成立因?yàn)椴煌幪?hào)可以有相同名稱。所以商品編號(hào)是候選鍵商品名稱不是。規(guī)則還說“每種商品可以有多種銷售價(jià)格”說明商品編號(hào)不能唯一確定銷售價(jià)格銷售價(jià)格依賴商品編號(hào)加商店編號(hào)或者依賴商品編號(hào)加某個(gè)價(jià)格類型。把每條規(guī)則里的“只有一個(gè)”“可以有多個(gè)”“只在一個(gè)”抽出來寫成 X → Y 或 X ? Y候選鍵自然浮現(xiàn)。我一般會(huì)讓學(xué)生先列函數(shù)依賴集再找最小屬性集能推出所有屬性的就是候選鍵。5.2 用 ER 圖反向驗(yàn)證函數(shù)依賴畫完 ER 圖后拿函數(shù)依賴集對(duì)一遍每個(gè)實(shí)體主鍵是否能唯一確定該實(shí)體的所有屬性每個(gè)聯(lián)系的主鍵是否能唯一確定聯(lián)系上的屬性。比如“銷售”聯(lián)系的主鍵是商店編號(hào)加商品號(hào)月銷售量依賴這個(gè)組合不能只依賴商店編號(hào)或只依賴商品號(hào)。如果發(fā)現(xiàn)某個(gè)屬性只依賴部分主鍵說明聯(lián)系類型判錯(cuò)了或者屬性掛錯(cuò)了地方。這種反向驗(yàn)證能抓出綜合題里隱藏的建模錯(cuò)誤。5.3 弱實(shí)體與多值屬性的取舍銷售價(jià)格到底建成弱實(shí)體還是多值屬性如果只需要知道當(dāng)前價(jià)格多值屬性夠用如果要保留價(jià)格歷史、不同商店不同價(jià)建成弱實(shí)體更合適主鍵為商品編號(hào)加商店編號(hào)加生效日期。作業(yè)說“實(shí)體屬性可不必畫出”所以第二題重點(diǎn)在聯(lián)系約束不必糾結(jié)屬性細(xì)節(jié)。但第一題要求注明聯(lián)系約束類型月銷售量掛在“銷售”聯(lián)系上聘期和月薪掛在“聘用”聯(lián)系上這些不能省。常見做法是聯(lián)系上的屬性用橢圓連到菱形不要連到實(shí)體。5.4 一份可復(fù)用的檢查流程每次畫完 ER 圖按這個(gè)順序走一遍先查實(shí)體主鍵是否唯一再查聯(lián)系類型是否標(biāo)對(duì)再查聯(lián)系主鍵是否按 1:1、1:n、m:n 規(guī)則確定再查弱實(shí)體是否雙邊矩形且主鍵含強(qiáng)實(shí)體主鍵再查多值屬性、導(dǎo)出屬性符號(hào)是否用對(duì)最后查畫圖工具是否合規(guī)、是否手繪拍照。這套流程走下來綜合題 44 分基本能拿滿。從那以后我每次帶學(xué)生做 ER 建模都強(qiáng)制走一遍這個(gè)檢查流程翻車次數(shù)明顯下降。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取