高質量數據建模的基本流程
概念模型確定系統邊界,確定哪些做哪些不做
基本概念:實體、屬性、域、關系、鍵、約束
---------實體-----------
六合分析法:5W1H
Who通常指與企業業務緊密聯系的人員和組織
What通常指企業業務相關的“事”等
When更多的時候是以屬性的模式出現的,而作為實體更多是以時間表的形式存在
Where指企業業務相關的地點,這個可以指具體的地點比如實體店,也可以指虛擬的網上商店
Why通常是指交易或者事件本身, 比如:銷售、采購、訂單等等
How通常是指你們通過什么形式去管理的,最常見的就是交易類的文檔信息,去表示以及記錄企業是如何完成交易的。比如:合同,協議,發票等等
IBM的Industry Model
安排,Arrangement-how
業務指導, business direction-how
相關方,Involved Party-who
產品(Product)-what
事件,Event-why
資源,Resource Item-what
位置,Location-where
分類,Classfication
按Pattern分
主實體(基本實體)
子類型實體
屬性類實體
關聯實體
---------屬性、域-----------
ID用於標識實體唯一性的屬性,一般都是主鍵
描述、引用、分類、限制、數量、時間相關、人物相關、地點相關、狀態、審計、派生
域:自定義數據類型
可以提高數據質量(通過域的定義,去建立用於檢驗數據合法性的規則,避免非法數據的插入)
使數據模型容易理解,方便溝通
使數據字段管理標准化
---------關系-----------
要根據需求來定模型的關系
介紹了一些PowerDesigner的使用
---------鍵-----------
候選鍵、主鍵、可選鍵、單鍵、復合鍵、代理鍵、自然鍵、外鍵
主鍵的特點:唯一不可重復、強制性不可為空、永久性不可改變、最小集合不可摻雜多余的屬性
自然鍵:有商業含義
代理鍵:沒有商業含義
在更新時,用代理鍵對於修改原有自然鍵更靈活多了
總體來說還是代理鍵性能更好一點
CHECKSUM CODE
緯度表、事實表?
在維度表中,存在代理鍵也必須存在1:1的自然鍵
---------約束(constrain)-----------
RI有幾個選項:NONE、Resetrict、CASCADE、SETNULL、SETDEFAULT
****---------NULL-----------
NULL是需要謹慎使用的,因為它可能會帶來一些數據質量的問題,以及會有一些不太容易被發現的程序的BUG
假如數據類型是整型或者浮點型,那么NULL不代表0, 0實際上還是有含義的,比如我考試缺考,那么成績是NULL;我考試得了0分,他們的含義是不同的
假如數據類型是字符型,那么它也不是長度為0的字符串
NULL既不代表0,也不代表空字符串,而是未知或不適用
數據庫在計算的時候會先檢查是不是有null,如果有就直接得出結果就是null(數學計算中所有NULL參與的計算,最后的結果都是NULL)
NUll小總結:(一共有五種特點比較突出的隱患)
1. 數學運算:任何數字與NULL做數學運算均為NULL
2. Where子句:搞清NULL的含義,小心”<>”以及 “全選”
3. Join:NULL與NULLJoin沒有結果
4. 聚合函數:若NULL設為0, AVG,MIN,MAX,COUNT均受影響
5. 子查詢:當存在NULL時,使用not in時需要特別注意
數據倉庫層面會分為三層:貼源層、按照第三范式創建的數據倉庫層、為了實現分析需求的星型模式構建的數據集市層。
Null的場景處理:主數據表、參照數據表、Xref表、事務表
OLTP聯機事務處理和OLAP聯機分析處理 的主要區別:
1)OLTP是面向顧客的,用於辦事員、客戶和信息技術專業人員的事務和查詢處理;OLAP是面向市場的,用於主管、經理、分析人員的數據分析
2)OLTP管理當前數據;OLAP管理歷史數據,提供匯總和聚集機制,並在不同的粒度層上存儲和管理信息
3)OLTP采用實體-聯系(ER)數據模型和面向應用的數據庫設計;OLAP采用星形或雪花形模型和面向主題的數據庫設計
4)OLTP主要關注一個企業或部門內部的當前數據;OLAP常跨數據庫,並出來來自不同單位的信息,以及由多個數據庫集成的信息
5)OLTP由短的原子事務組成,需要並發控制和恢復機制;OLAP大多是只讀操作
參考https://edu.hellobi.com/course/54
同一個字段,在不同表中的定義長度還有不同,這就帶來了很多隱患,比如某些長度定義不夠,字符串被截斷這類問題
在設計之初,要考慮未來有哪些環境上的變化