高质量数据建模的基本流程
概念模型确定系统边界,确定哪些做哪些不做
基本概念:实体、属性、域、关系、键、约束
---------实体-----------
六合分析法: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表、事务表
参考https://edu.hellobi.com/course/54
同一个字段,在不同表中的定义长度还有不同,这就带来了很多隐患,比如某些长度定义不够,字符串被截断这类问题
在设计之初,要考虑未来有哪些环境上的变化