这是数据世界中比较常见的术语,但对于商业来说,由于有许多数据建模概念,它往往令人困惑。是的,这就是为什么大多数商业需求最终只成为了愿望清单的原因。
我会尽量不深入细节,但会尽力涵盖大部分听众。首先,必须理解规范化的概念,而要理解规范化,就需要了解反规范化。
去规范化:毫无疑问,我们都曾在Excel上工作过。Excel有列和行,数据库中的表也是如此。考虑在Excel中拥有员工详细信息,如员工ID、姓名、手机号码、地址、薪水、部门等列。所有与一个员工相关的信息可以存储在一行中,这是一种去规范化的数据模型。
规范化:现在想象一下,每个员工每个月都会得到一份薪资,但表格中只有一个薪资列。在这种情况下,第一个月的薪资将进入薪资字段,那么下一个月的薪资会发生什么?有多种选项来满足这种情况,例如,
1.将第一个月的薪资替换为第二个月的薪资,这样你就会失去上个月的薪资。
2.添加另一个薪资列,即第二个月的薪资。这个选项也不可行,因为每个月都必须添加一个新列。
3.将员工详细信息分解成多个表格/工作表,即将员工详细信息保留在表格/工作表中,并创建一个新的表格/工作表,即“薪资”表格,用于记录每月的薪资。
我们可以将员工编号带到薪资表中作为参考。
以上我们所做的被称为规范化方式的数据建模。
如上所述,有OLTP(在线事务处理)和OLAP(在线分析处理)数据模型。
关系类型:
1.一元关系是指一个列依赖于同一张表中的另一个列,换句话说,会有一个内部连接。
2.二元关系是指两个表彼此连接的情况。
3.三元关系是指有三个表通过另一个中间表相互连接的情况。
建模类型:
1.概念建模是以图形化展示的方式展示解决方案概念以设计解决方案的方法。它可以被视为任何项目或产品的起点。
2.逻辑建模更注重需求。它展示解决方案中实体、活动和结果之间的关系。
3.物理建模将进入下一个层次,展示表、列、主键和外键之间的关系。
数据建模方案(scheme):
1.关系型:规范化建模是这种方案的例子,其中数据模型旨在减少冗余。
2.维度型:星型和雪花型模式(作为单独的主题解释)是这种方案的例子,其中事实表与维度表连接。
3.面向对象(UML):这是一种用于建模软件本身的图形语言。它由具有实体类型和关系类型的类模型组成。
4.基于事实:这在概念建模中使用,其中一切都基于对象及其相互关系。
5.基于时间:数据的值应该与时间相关联。
6.NoSQL:使用NoSQL数据库,如图、文档、键值和面相列。NoSQL不像关系或维度模型那样工作,其中一个表基于主键和外键与另一个表连接。