数据建模入门.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE5

数据建模入门

Beginner’sGuidetoDataModelling

在本文中我们主要介绍7个主题,确定数据模型的范围(创建实体)、主键、外键、1对多关系、层级、继承与参考数据。先说明本文所用的建模工具软件“DezignDataModellingTool”。作者选择此工具的原因很简单,工具很好很强大,灵活最重要的是付的起钱。特别说明DatabaseAnswers社区成员购买Dezign打75折。想打折的话与作者联系吧。记住一定要告诉他你的社区ID,不过我(译者)还是推荐PD(PowerDesigner)。在本文的最后,我们建立一个逻辑数据模型,通常我们称之为“实体关系图”,当然希望本文对你有点用。

让我们开始吧。

在本文中,我们将为星巴克的一个简单的订单处理过程建立数据模型,。

建立数据模型的步骤:

确定数据模型的范围

确定该范围中的实体

定义实体之间的关系

确定数据模型的范围

走进星巴克,我们会发现他们为顾客提供很多产品,我们的第一个任务就是确定我们的数据模型中需要包含哪些产品。

图1欢迎来到星巴克

目前,我们只对吃的与喝的东西有兴趣;

桌子上的杯子我们并不去理会它。

我们的数据模型中应该包括三类实体,顾客、订单与产品

主键:

在这一过程中,我们不管实体的详细信息,实体间的关系,仅指定主键和一个details域,下一步再来替换details域的内容

主键域通常是第一个域

如图所示,customers_version2的主键是Customer_id

旁边的’PK’表示该域是此表的主键

主键非常重要,只有主键才能在表中区别实体数据

数据库三范式:

图2星巴克里的实体

数据库表的每一列都是不可分割的数据项,无重复列,也就是说一个数据项的属性不能是复合属性、不能是多值属性、也不能是重复属性

每一行必须唯一区分,行数据不重复(主键)

无数据冗余,数据库表中不能包含其他表的非主键信息(外键)。

BC范式,数据项属性不能依赖或传递依赖任一侯选关键字(通常是外键)。

外键:

为实体添加关系:

当一个表的主键用于其他表时,称为这个其他表的外键。

如图所示,当customer_id在表Orders_vision3表中出现时,为该表的外键

通常在数据模型图中使用’FK’表示

必选关键域

外键通常是强制性的必选域,也就是说,一个表中的外键必须与另一个表的主键的实际数据对应,比如在我们的模型中,Customers_version2中的主键customer_id,在表Orders_vision3中是外键,这表示在表Orders_version3中customer_id的数据在表图3星巴克实体有主键

Customers_version2中一定会有对应的一条数据项。

在数据模型图中,这种关系在靠近主键实体的一侧有一条短直线来表示,参考图4。

一对多关系

一对多关系

一个顾客可以下多个订单

对表Orders来说,它这一方的关系是“多”,Customer表是“一”。

在数据模型图中,这种关系在“多”的一端采用三条短线来表示,称之为“乌鸦脚”。

可选关键域

不是每一个客户都会有订单,通常情况下顾客可能我们也得允许这种情况,就是有人太多变,本来想买,现在不买了,本来要买汉堡,现在改馒头了。

对于表Orders来说,这个关系在它这一方是“可任选的(optional)”

这在数据模型图中在靠近表Orders的一侧用一个小写的“o”来表示。参考图4。

分层

在这一步我们添加参考数据。

图4有关系的星巴克实体在图5中我们可以看到产品(Product)表与产品类型表(ProductType)之间的层级关系。

RabbitsEars

注意,在Product_Types_v1表有一条虚线,从其右上角开始,至其右侧边。

数据分析中这被称为“自反关系”。

通俗来讲,我们说这个产品类型表与自己相连,也就是说该表中的一项可能与表中的另一项有关系。

这种方法来实现每一种产品类型与另一种产品类型有关系,从而实现层级化。

举例说明:产品Panini是产品子类MiscelleneousSandwiches的一种,该子类又属于高层产品类ColdFood,这个ColdFood又属于Food类。

下次去星巴克的时候,看看柜台后面的报价表,试着定义数据模型。

注意:虚线的两端都有一个小’o’。

这表示“产品类型的父类”是可选的,因为最高层的产品类型没有父类型。参考图5。图5星巴克里的产品

继承

食物与饮料是典型的产品

他们继承产品

文档评论(0)

Seiryu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档