數(shù)據(jù)庫學(xué)習(xí):數(shù)據(jù)模型
前言
數(shù)據(jù)建模就是通過減低數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜度得到各個(gè)方面都能理解的數(shù)據(jù)抽象,包括定義實(shí)以及它們之間的關(guān)系。接下來學(xué)習(xí)數(shù)據(jù)建模的基本概念以及數(shù)據(jù)模型的發(fā)展過程。
正題
在開始編寫文章前,有幾個(gè)問題需要思考一下:
什么數(shù)據(jù)模型
生成數(shù)據(jù)模型的業(yè)務(wù)規(guī)則
數(shù)據(jù)模型構(gòu)成
數(shù)據(jù)模型的類別
數(shù)據(jù)模型的抽象層次
1. 什么是數(shù)據(jù)模型
數(shù)據(jù)模型(data model)是對復(fù)雜現(xiàn)實(shí)世界數(shù)據(jù)結(jié)構(gòu)的一種簡單表達(dá),如采用圖形方式。廣而言之,模型是對復(fù)雜現(xiàn)實(shí)世界對象或事件的抽象,它能幫助我們理解現(xiàn)實(shí)世界的復(fù)雜性。而在數(shù)據(jù)庫環(huán)境中,數(shù)據(jù)模型則是表示數(shù)據(jù)結(jié)構(gòu)及其特征、關(guān)系、約束、變換以及為特定問題域提供支持的其他組成。
2. 生成數(shù)據(jù)模型的業(yè)務(wù)規(guī)則
當(dāng)數(shù)據(jù)庫設(shè)計(jì)人員決定使用實(shí)體、屬性和聯(lián)系建立數(shù)據(jù)模型時(shí),他們首先應(yīng)對企業(yè)的數(shù)據(jù)進(jìn)行全面了解和分析,如企業(yè)有哪些數(shù)據(jù)種類、如何使用及何時(shí)使用這些數(shù)據(jù)等。但是,這些數(shù)據(jù)和信息本身不會對企業(yè)整個(gè)業(yè)務(wù)的了解。從數(shù)據(jù)庫角度看,數(shù)據(jù)只有在其能正確反映所定義的業(yè)務(wù)規(guī)則時(shí)才有意義。業(yè)務(wù)規(guī)則(Business Rule)是對特定組織的策略、規(guī)程和準(zhǔn)則的簡要、清晰和無歧義描述。從某種意義上講,業(yè)務(wù)規(guī)則是一個(gè)誤稱,實(shí)際上也可應(yīng)用于存儲和利用數(shù)據(jù)產(chǎn)生信息的任意規(guī)模組織,如企業(yè)、政府機(jī)構(gòu)、宗教團(tuán)體或研究所等。
業(yè)務(wù)規(guī)則來自對企業(yè)操作的詳細(xì)描述,可幫助企業(yè)創(chuàng)建和實(shí)施具體活動(dòng),因此必須明確制定并及時(shí)更新,以正確反映企業(yè)操作環(huán)境的變化。
正確的業(yè)務(wù)規(guī)則可用于定義實(shí)體、屬性、聯(lián)系和約束。任何時(shí)候,當(dāng)我們看到“一個(gè)代理人可以為多個(gè)客戶服務(wù),而每個(gè)客戶只能由一個(gè)代理人服務(wù)”的聯(lián)系描述時(shí),那就是業(yè)務(wù)規(guī)則在發(fā)生作用。
為了提高效率,業(yè)務(wù)規(guī)則應(yīng)簡單易懂且廣泛宣傳,以確保組織中的所有人都能正確理解。業(yè)務(wù)規(guī)則是用簡單語言描述從公司視覺所看到數(shù)據(jù)的特征。例如:
一個(gè)客戶可以產(chǎn)生多張發(fā)票。
一張發(fā)票只能由一個(gè)客戶產(chǎn)生。
少于 10 名雇員或超過 30 名雇員都不能安排培訓(xùn)會議。
這些業(yè)務(wù)規(guī)則可建立實(shí)體、聯(lián)系和約束。
2.1 發(fā)現(xiàn)業(yè)務(wù)規(guī)則
業(yè)務(wù)規(guī)則的主要來源是公司經(jīng)理、策略制定者、部門經(jīng)理以及書面文檔(如公司的規(guī)程、標(biāo)準(zhǔn)或操作手冊)。一個(gè)更加快速直接獲得業(yè)務(wù)規(guī)則的方法是直接同用戶對話。但不幸的是,由于各個(gè)人的理解不同,當(dāng)需要制定特定的業(yè)務(wù)規(guī)則時(shí),用戶顯得不太靠譜。例如,維護(hù)部門的技工可能認(rèn)為任何一個(gè)技工都可以啟動(dòng)一個(gè)維護(hù)程序,然而,事實(shí)上只有授權(quán)檢查的人才能完成此項(xiàng)任務(wù)。這種區(qū)別看起來似乎很平常,但是可能產(chǎn)生重大的法律后果。雖然用戶是制定業(yè)務(wù)規(guī)則的決定性因素,但是用戶的理解仍需做進(jìn)一步驗(yàn)證。如果與許多從事相同工作的人進(jìn)行交流,常常會對該項(xiàng)工作產(chǎn)生不同的理解,這很可能被認(rèn)為是管理上的問題。因此,這種泛泛的調(diào)查分析不能幫助數(shù)據(jù)庫設(shè)計(jì)人員,他們的職責(zé)就是要協(xié)調(diào)這些差異并對產(chǎn)生的結(jié)果進(jìn)行驗(yàn)證,以確保得到合適且準(zhǔn)確的業(yè)務(wù)規(guī)則。
識別和確定業(yè)務(wù)規(guī)則對數(shù)據(jù)庫設(shè)計(jì)至關(guān)重要,因?yàn)樗軌颍?/p>
幫助企業(yè)進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化。
為用戶和設(shè)計(jì)人員提供交流工具。
幫助設(shè)計(jì)人員理解數(shù)據(jù)的本質(zhì)、作用和范圍。
幫助設(shè)計(jì)人員理解業(yè)務(wù)流程。
幫助設(shè)計(jì)人員開發(fā)出合適的聯(lián)系參與規(guī)則和約束,并建立正確的數(shù)據(jù)模型。
當(dāng)然,并不是所有的業(yè)務(wù)規(guī)則都可以被建模。
2.2 將業(yè)務(wù)規(guī)則轉(zhuǎn)化成數(shù)據(jù)模型組件
業(yè)務(wù)規(guī)則為正確識別實(shí)體、屬性、聯(lián)系和約束提供了基礎(chǔ)。在現(xiàn)實(shí)世界中,通常用名稱來標(biāo)識對象。如果業(yè)務(wù)環(huán)境需要保持對象的狀態(tài),那么應(yīng)對其產(chǎn)生專門的業(yè)務(wù)規(guī)則。一般來說,業(yè)務(wù)規(guī)則中的名詞可轉(zhuǎn)化成數(shù)據(jù)模型中的實(shí)體,而與名詞相連的動(dòng)詞(主動(dòng)或被動(dòng))則可轉(zhuǎn)化成實(shí)體之間的聯(lián)系。例如,業(yè)務(wù)規(guī)則“一位客戶可產(chǎn)生多張發(fā)票”包含兩個(gè)名詞(客戶和發(fā)票)和一個(gè)動(dòng)詞(產(chǎn)生),我們可從中推出:
客戶和發(fā)票是系統(tǒng)感興趣的對象,應(yīng)表示為實(shí)體。
客戶和發(fā)票間存在“產(chǎn)生”聯(lián)系。
為正確判定聯(lián)系的類型,應(yīng)考慮聯(lián)系的雙向特性。如果在上面規(guī)則的基礎(chǔ)上在增加一條規(guī)則“一張發(fā)票只能由一位客戶所產(chǎn)生”,那么該聯(lián)系就是一對多(1:M)聯(lián)系,其中客戶是“一”,發(fā)票是“多”。
作為一般準(zhǔn)則,可通過下列兩個(gè)問題判定聯(lián)系的類型:
有多少 B 的實(shí)例與一個(gè) A 的實(shí)例關(guān)聯(lián)?
有多少 A 的實(shí)例與一個(gè) B 的實(shí)例關(guān)聯(lián)?

3. 數(shù)據(jù)模型構(gòu)成
數(shù)據(jù)模型的基本組成包括實(shí)體、屬性、聯(lián)系和約束。
實(shí)體(Entity):可以是任何事物,如一個(gè)人,一個(gè)地點(diǎn)、一個(gè)物件或一個(gè)事件等,其數(shù)據(jù)將被收集和存儲。一個(gè)實(shí)體表示現(xiàn)實(shí)世界中一類特定類型對象。實(shí)體是“可區(qū)分的”,即每個(gè)實(shí)體是獨(dú)特且唯一的。
屬性(Attribute):用于描述實(shí)體的特征。屬性等同于文件系統(tǒng)中的字段。
聯(lián)系(Relationship):用于描述實(shí)體之間的關(guān)聯(lián)。聯(lián)系有 3 種類型:一對多、多對多、一對一,可分別用符號 1:M(或 1..*)、M:N(或 *..*)和 1:1(或 1..1)表示。
《數(shù)據(jù)科學(xué)與人工智能》公眾號推薦朋友們學(xué)習(xí)和使用Python語言,需要加入Python語言群的,請掃碼加我個(gè)人微信,備注【姓名-Python群】,我誠邀你入群,大家學(xué)習(xí)和分享。
