数据建模关心独立于数据的收集和使用过程的数据(静止数据),过程建模在显示类数据将如何被收集和使用(运动中的数据),uml对象建模 一个对象的属性,操作了和使用属性
1 实体分类:人:代理/承包人/客户/部门/分部/雇员/导师/学生/供应商 个人/小组/组织
地点:销售地区 建筑物 房间 分支办公室 校园
对象:图书 及其 不见 软件包 汽车模型 汽车 实际的对象(如 软件许可证) 或者一类对象的说明(如 不同的软件包说明)
事件:应用 奖励 取消 分类 飞行 开发票 订单 注册 续借 获取 预定 销售 旅行
概念: 帐号 时间段 债券 课程 基金 资格 股票
2 属性:属性值:域(范围) 数据类型(某种程度上定义域) 默认值
子集准则:学生 (last Name,first Name, birthDate,Gender(子集准则1),Race(子集准则2), Major(子集准则3))
3 基数:一个仅且一个 0个或1个 1个或n个 0个1个或多个 大于1个
4 度数: 两个实体的关系 --2维 一个实体的关系,父节点---1维 n个实体 n维关系, n维关系用一个新的称为关联实体的实体结构说明。
关联实体 是一个从多个其他实体(也可是父实体)继承其主键的实体,其复合键的每个部分指向每隔链接实体的一个且仅一个实例 也可有自己的属性,如时间等
数据建模过程: 数据模型是不断累进的,对于一个企业或应用,不存在“最终的”数据模型这种东西。 它是活的,随需求变化而变化
数据模型作用可以有:确定业务词汇 比过程建模快 只需要一张纸 (而过程建模需要好多张) 过程建模很容易陷入不必要的细节中
现有系统和建议系统的相似性远比他们的过程模型之间的相似性高
问题分析阶段的模型应该仅仅包括实体和关系,而不包括属性,这叫做上下文数据模型,目的是提炼我们对项目范围的理解,而不是获取实体和业务规则和细节 很多关系可以是非特定关系。 需求分析得出一个逻辑数据模型,其步骤:1) 构造上下文数据模型开始确定项目范围,如果有,也可以修改一反应新的需求和新的项目范围 2)绘制一个基于键的数据模型 这个模型将消除非特定关系,怎加实体关联 包括主键和替代键 还将包括精确的基数和泛化层次 (1-1 1-n m-n) 3)构造一个具有完整属性的数据模型 包含了所有描述性属性和子集准则 每个属性都用数据类型 域 默认值在资料库中定义 也叫做完全描述的数据模型 4)规范化 适应性 灵活性
jrp和面谈问题: 获取系统实体家伙去实体键 实体子集准则 获取属性和域 获取安全和控制需求 数据时间需求(数据变化频繁 保存多久 历史) 获取泛化 关系 度数 技术
工具:case产品 正向 可以检查手工错误 完整性一致性, 也有些case产品支持逆向将现有文件和数据库结构变为数据模型 但是也有写不足 case中的模型符号表示不一定支持其他数据建模规则
如何构造数据模型:(本节教如何从头开始,其实你可以寻找一个现有模型, 或可以从现有的数据库中细想一个数据模型)
1 获取实体 开会面谈 研究现有表格文档 报告 有些表可以确定事件实体 如order requisition(征用令;申请书) payment deposit(储蓄;寄存) 一旦发现就给他们一个简单有意义面向业务的名字 属性的域不应该有业务逻辑
分析数据模型:虽然this有效的沟通了数据库,单不一定代表了一个好的数据库设计, 某些结构特征可能会降低模型的灵活性和扩展性,或产生不必要的冗余
好的数据模型标准:简单:一个实体实例的每隔属性值只能有一个值 无冗余:每个属性(除了外键)最多在一个实体中描述 灵活对未来适应-----------这些都用数据分析来达到。
数据分析:规范化,3范式 1范式:所有属性对于实体的单个实例都只有一个值 任何可以有多个值的属性实际描述了一个的单独的实体 也可能是一个实体和关系 2范式:1范式+:非主键属性值依赖主键,不仅仅是部分的依赖 任何仅仅部分的依赖主键的非键属性应该被移动到另一个实体中,在哪里部分键实际上是完全建 它可能需要在模型中创建一个新的实体和关系. 3范式:2范式+:如果他的非主键属性的值不依赖于任何其他非主键属性 任何依赖于其他非键属性的非键属性必须去掉或删除 新的实体或关系可能要被添加到数据模型中
将数据需求映射到地点: 每隔地点需要实体和属性的哪些子集来完成工作, 需要神马级别的访问,该地点可以创建实体实例吗,可以读取实体实例吗,可以删除实体实例吗,可以修改实体实例吗?----------------------数据--地点--crud矩阵 行:实体(和可能滴属性),列:地点, 单元格:访问级别(S(submit)C R U D All SS(subset)X(no access) INDV(individual 个体的))。 在某些case工具中,可以为每隔地点定义数据模型的视图,
数据建模的知识到这里,如果要实现成数据库,阅读 数据库设计,逻辑数据模型被转变为物理数据库模型。用case工具,可以自动生成创建数据库的代码