第二部分 實體、屬性和關係

前言:對於數據建模最重要的三項技能
1.瞭解業務知識的能力;
2.語言溝通能力;
3.數據庫的規範化知識。 這一系列涉及到的只有語言溝通能力和數據庫的規範化知識,但是能被呈現在博客裏的只有數據庫的相關規範知識。
溝通技巧:

澄清
實踐
探索
確認

一、實體

實體一般是名詞,表示的是人、事、物的抽象化對象,比如:員工、公司等等。在數據庫中實體就是表,實例就是一行行的數據。

1.舉個栗子

帶着你的女朋友走進一家化妝品店銷售人員詢問女友的購買意向並且根據購買意向,以及她皮膚的特質向你們推薦一款適合她皮膚的化妝品 。你女友辦理了 會員卡,然後你在 收銀員刷卡消費
你,你的女朋友–> Customer
化妝品店 --> Store
銷售人員,收銀員 --> Employee
化妝品 --> Product
會員卡 --> VIP Card
皮膚特 質 --> Skin
購買意向–> Indicated Order
POS機 --> Resource Item
刷卡消費–> Order

2.實體的分類:按照含義分類(5W1H)

分類 舉例
Who 客戶,員工,患者,學生,旅客,代理商,公司,部門,等等
What 商品,產品,原材料,服務,成品,半成品,課程,書籍,等等
When 時間,日期,周,月份,季度,半年,財年
Where 商店、餐廳、地址、倉庫、IP 地址, Web Site
Why 訂單、銷售、採購、促銷、投訴、交易
How 合同、協議、發票

3.實體的分類:按照 Pattern 分類

(1)主實體(基本實體):客戶,包含屬性客戶編碼、客戶地址、客戶聯繫人
(2)子類型實體:潛在客戶,不僅包含上面客戶的屬性,還包含當前機會、購買意向等其他特有屬性
(3) 屬性類實體:由屬性引發的實體,比如客戶地址,包含了客戶編碼、地址類型、地址等屬性
(4)關聯實體:客戶實體和員工實體是通過銷售代表分配表關聯的

二、屬性

對於屬性的描述在上面已經有所涉及,具體定義就不做記錄了。

1.屬性的分類:按照內容分類

ID,時間相關、任務相關、地點相關、數量、狀態等等

2.屬性的特性

(1)強制還是可選?
(2)原子還是組合?直接還是派 生?
(3)單值還是多值?
(4)是否是可選鍵?
(5)屬性的數據類型是什麼?
(6)屬性是否有默認值?
(7)派生屬性是如何計算的?

3.屬性的取值

這個就是根據各個數據庫的特性涉及,比如mysql 字符串有char、varchar、文本有text,時間有datetime等等

三、域

1.定義

屬性的所有取值的集合,可以理解成自定義的一種數據類型,並且還能帶有約束

2.域的優點

(1)挺高數據質量;
(2)使數據模型易於理解和便於溝通;
(3)標準化,提高建模效率和模型質量。

3.域的缺點

一旦修改與就會修改使用域的所有字段,進而可能影響存儲性能、表空間的使用等。比如,域中的字段原來是varchar(10),現在有一個字段增長到了varchar(100),然後改成了varchar(100),對應的所有字段都被改成varchar(100),消耗的存儲空間會增大,原來分配的表空間也可能不夠用了。

三、關係

1.定義

通常是動詞,比如老師教課程中的“教”。用於表示實體和實體之間的關係。
在概念模型層級,存在一對多、多對一、多對多等情況,而在邏輯模型和物理模型層級,需要消除多對多的情況。

2.方法

用問題確定關係:
Q1 一 位老師可以教多門課嗎?
A1 可以
Q2 一 門課程可以多個老師教嗎?
A2 可以
Q3 是不是每位老師 一定要教課?
A3 不一 定,比如管教務的老師,比如管實驗室的老師他們不用教課
Q4 是不是每門課程 一定要有老師教?
A4 假設大學而言,是的。

感想:感覺這系列課程更像是數據庫模型設計(ETL工程師)的理論課程, 爲了使用powerDesign之類的軟件學習的理論學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章