数据仓库专题18-数据建模语言IDEF(转载)
1引言
IDEF的含义是集成计算机辅助制造(Integrated Computer-AidedManufacturing,ICAM)DEFinition。最初的IDEF方法是在美国空军ICAM项目建立的,最初开 发3种方法:功能建模(IDEF0)、信息建模(IDEF1)、动态建模(IDEF2),后来,随着信息系统的相继开发,又开发出了下列IDEF族方法: 数据建模(IDEF1X)、过程描述获取方法(IDEF3)、面向对象的设计(OO设计)方法(IDEF4)、使用C++语言的OO设计方法 (IDEF4C++)、实体描述获取方法(IDEF5)、设计理论(rationale)获取方法(IDEF6)、人-系统交互设计方法(IDEF8)、 业务约束发现方法(IDEF9)、网络设计方法(IDEF14)等。根据用途,可以把IDEF族方法分成两类:
第一类IDEF方法的作用是沟通系统集成人员之间的信息交流。主要有:IDEF0、IDEF1、IDEF3、IDEF5。IDEF0通过对功能 的分解、功能之间关系的分类(如按照输入、输出、控制和机制分类)来描述系统功能。IDEF1用来描述企业运作过程中的重要信息。IDEF3支持系统用户 视图的结构化描述。IDEF5用来采集事实和获取知识。
第二类IDEF方法的重点是系统开发过程中的设计部分。目前有两种IDEF设计方法:IDEF1X和IDEF4。IDEF1X可以辅助语义数据模型的设计。IDEF4可以产生面向对象实现方法所需的高质量的设计产品。
2 IDEF1x方法
IDEF1X是IDEF系列方法中IDEF1的扩展版本,是在E-R(实体联系)方法的原则基础上,增加了一些规则,使语义更为丰富的一种方法。概 念模型设计常用IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术,用于建立系统信息模型。IDEF1的最初形式是在 P.P.S (Peter) Chen的实体联系模型化概念与P.P.(Ted) Codd的关系理论的基础上发展起来的。IDEF1X是IDEF1的扩展版本,除在图形表达和模型化过程方面的改进外,还对语义进行了增强和丰富。例如: 分类联系 (Categorization Relationships)的引入。
IDEF1X是语义数据模型化技术,它具有以下的特性:
(1) 支持概念模式的开发。
IDEF1X语法支持概念模式开发所必需的语义结构,完善的IDEF1X模型具有所期望的一致性、可扩展性和可变换性。
(2) IDEF1X是一种相关语言。
IDEF1X对于不同的语义概念都具有简明的一致结构。IDEF1X语法和语义不但比较易于为用户掌握,而且还是强健而有效的。
(3) IDEF1X是便于讲授的。
语义数据模型对许多IDEF1X用户都是一个新概念。因此,语言的易教性是一个重要的考虑因素,设计IDEF1X语言是为了教给事务专业人员和系统分析人员使用,同样也是教给数据管理员和数据库设计者使用的。因此,它能用作不同学科研究小组的有效交流。
(4) IDEF1X已在应用中得到很好地检验和证明。
IDEF1X是基于前人多年的经验发展而来的,它在美国空军的一些工程和私营工业中充分地得到了检验和证明。
(5) IDEF1X是可自动化的。
IDEF1X图能由一组图形软件包来生成。商品化的软件还能支持IDEF1X模型的更改、分析和结构管理。
IDEF1X把实体-联系方法应用到语义数据模型化中,IDEF1的最初形式是在P.P.S (Peter) Chen的实体联系模型化概念与P.P.(Ted) Codd的关系理论的基础上发展起来的。IDEF1X是IDEF1的扩展版本,除在图形表达和模型化过程方面的改进外,还对语义进行了增强和丰富。例如: 分类联系 (Categorization Relationships)的引入。
IDEF1X模型的基本结构和ER模型基本类似,主要有以下元素:
(1)实体(如人、地点、概念、事件等)用矩形方框表示;
(2)实体之间的关系(联系),用方框之间的连线表示;
(3)实体的属性,用方框内的属性名称来表示。
关系是实体间的一种逻辑联系,用动词或动词短语命名。实体之间的关系可以分为确定关系和不确定关系。确定关系又分为连接关系和分类关系。连接关系也 称“父子关系”,它是两个实体之间的联系或连接,一个实体(子实体)依赖于另一个实体(父实体)。分类关系表示实体间的一种分层结构,一个实体(类属实 体)表示这些事物的全集,其它(分类实体)则为其子集。不确定关系又称“多对多关系”,两个实体间相互存在着一对多的联系,如图1。

图1 不确定关系
连接关系又分为标识关系和非标识关系。判别一个关系是标识关系还是非标识关系只要区分子实体的主键,看是否需要父实体的外键来共同作为主键,需要则 为标识关系(Identifying),如图2;如果子实体自己的主键就可唯一标识则它为非标识关系(Non-Identifying),如图3。在标识 关系中的子实体称为依赖实体,用圆角矩形表示;其它用方角矩形表示的就是独立实体。

图2 标识关系

图3 非标识关系
分类关系根据表示分类的实体集是不完全分类还是完全分类的又可以分为不完全分类关系和完全分类关系。
很多的数据库建模工具都支持IDEF1x方法,如CA公司的ERWin、Sybase公司的PowerDesigner以及微软公司的Visio 等。这些工具都能建立完整的IDEF1x概念模型并支持直接将模型转换为物理数据库的结构。图4显示的就是采用Visio建立的学生选课的数据库概念模 型。我们用这个实例来说明IDEF1x建模方法的步骤。

图4 基于IDEF1x方法的学生选课概念模型
数据仓库专题18-数据建模语言IDEF(转载)的更多相关文章
- 数据仓库专题19-数据建模语言Information Engineering - IE模型(转载)
Information Engineering采用Crow's Foot表示法(也有叫做James Martin表示法的),中文翻译中对使用了Crow's Foot表示法的模型也有笼统的称做鸭掌模型的 ...
- 数据仓库专题(2)-Kimball维度建模四步骤
一.前言 四步过程维度建模由Kimball提出,可以做为业务梳理.数据梳理后进行多维数据模型设计的指导流程,但是不能作为数据仓库系统建设的指导流程.本文就相关流程及核心问题进行解读. 二.数据仓库建设 ...
- 【mysql的设计与优化专题(1)】ER图,数据建模与数据字典
需求分析是做项目中的极为重要的一环,而作为整个项目中的'血液'--数据,更是重中之重.viso,workbench,phpmyadmin等软件可以帮我们更好的处理数据分析问题. ER图 E-R方法是& ...
- AngularJS数据建模(转载)
出处不明 我们知道,AngularJS并没有自带立等可用的数据建模方案.而是以相当抽象的方式,让我们在controller中使用JSON数据作为模 型.但是随着时间的推移和项目的成长,我意识到这种建模 ...
- NoSQL 数据建模技术(转)
本文转载自:http://coolshell.cn/articles/7270.html ================================================ 全文译自墙外 ...
- 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- Django博客开发-数据建模与样式设定
开发流程介绍 之前Django的学习过程当中已经把基本Django开发学完了,现在以Django 的博客项目完成一遍课程的回顾和总结.同时来一次完整开发的Django体验. 一个产品从研究到编码我们要 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
随机推荐
- html+css实现小米商城首页静态页面
学了一个星期的html和css,用新学的东西写点东西,仿照小米商城的首页按照它的页面布局盗用它的图片写了个小米商城的静态页面. 源代码:链接:https://pan.baidu.com/s/1qf63 ...
- ldd 查看程序依赖库
ldd 查看程序依赖库 https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ldd.html
- JAVA基础部分复习(五、JAVA反射)
关于反射: 1.需要了解jvm类的加载机制(java高级部分会详细介绍) 2.反射的API其实只要多看看API和源码,很容易就懂了. 下面是代码,简单讲解反射的使用: import java.lang ...
- 项目报错 exception 'RedisException' with message 'Redis server went away' in XXX
检查服务器防火墙是否开启redis端口:如果返回no 表没确实没开 firewall-cmd --query-port=6379/tcp 开启:firewall-cmd --add-port=6379 ...
- Django模型层之多表操作
----------------https://www.cnblogs.com/liuqingzheng/articles/9499252.html 实例:我们来假定下面这些概念,字段和关系 一 创建 ...
- C++学习(二十九)(C语言部分)之 顺序表
一.数据结构组织 存放数据的方式 精心选择的数据结构可以提升效率 数据结构 1.逻辑结构 一对多关系 父与子 一对一关系 排队中 多对多关系 两地的路线 2.存储结构 数据存放的位置关系 顺序存储数据 ...
- 实验吧—Web——WP之 因缺思汀的绕过
首先打开解题链接查看源码: 查看源码后发现有一段注释: <!--source: source.txt-->这点的意思是:原来的程序员在写网页时给自己的一个提醒是源码在这个地方,我们要查看时 ...
- switch语句和switch-case与if-else之间的转换
switch语句格式:switch(变量){case 常量1:语句1;break;case 常量2:语句2;break;......default:语句;break;}特点:1.根据变量的值,选择相应 ...
- hdu1695 GCD 容斥原理
Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD(x, y) = k. GCD(x, y) ...
- JAVA的初始化顺序:
JAVA的初始化顺序: 父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造 ...