实体关系图(ER图)

本文通过PetShop数据库实例,详细解析了实体关系图(ER图)的设计原理及应用,包括1对1、1对多和多对多关系,并展示了不同约束条件下的表结构。
  实体关系图也是设计数据库的关键问题,同时开发工程师也需要理解系统设计人员发布的ER图。是开发不可避免并经常用到的问题。所以加以论述。而本章使用的Microsoft SQL Server2000。由于其简单易用,是学习的好工具,所以采用。采用ERwin也是由于许多的开发商使用和简单易用的特性的原因,另外用得好的是PowerDesigner由于稍显复杂,故未采用。

 实体关系图(ER)

  在下面的具体实例中,使用的是PetShop数据库(网络上传播的为微软的.net的测试数据库,下载地址http://www.qddown.com/down.asp?id=2475&no=1.本文使用的是Petshop(<st1:chsdate isrocdate="False" month="12" w:st="on" day="30" islunardate="False" year="1899">1.5.2</st1:chsdate>).msi版本).ER建模工具为Erwin4.1.4.1是其表结构在ERwin下的ER.

<o:p></o:p>

<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 311.25pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:title="4"></v:imagedata></v:shape>

1

3.1 11关系

    2:Account中的useridSignon中的usernameProfile中的userid具有11的关系. 表中存在约束关系.并且Account中的userid必须同时在SignonProfile中出现才可以插入.SignonProfile则没有限制.

<o:p></o:p>

<v:shape id="_x0000_i1026" type="#_x0000_t75" style="WIDTH: 165pt; HEIGHT: 395.25pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image003.wmz" o:title=""></v:imagedata></v:shape><o:p></o:p>

2

3.2 1对多关系<o:p></o:p>

  如图3:Profile表中的favcategoryBannerData的主键favcategory具有外键约束,并且favcategoryProfile中可以重复出现. 并只能是在BannerData中出现的才可以插入。

<v:shape id="_x0000_i1027" type="#_x0000_t75" style="WIDTH: 165.75pt; HEIGHT: 209.25pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image005.wmz" o:title=""></v:imagedata></v:shape><o:p></o:p>

3

下图也是一对多的关系为什么出现的一个是菱形的图标?因为可以在Profile中在favcategory项上可以为空.而不必一定要出现在BannerData.如果没有菱形图标就不允许为空。如下图4:

<v:shape id="_x0000_i1028" type="#_x0000_t75" style="WIDTH: 328.5pt; HEIGHT: 380.25pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image007.wmz" o:title=""></v:imagedata></v:shape><o:p></o:p>

图4

3.3 多对多关系<o:p></o:p>

     一门课程同时有若干学生选修,而一个学生有同时可以选多门课程,则学生与课程之间具有多对多关系。如图5:

<v:shape id="_x0000_i1029" type="#_x0000_t75" style="WIDTH: 168pt; HEIGHT: 288.75pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image009.wmz" o:title=""></v:imagedata></v:shape><o:p></o:p>

5

3.4 无任何约束的表

     没有限制的表,如图6:

<v:shape id="_x0000_i1030" type="#_x0000_t75" style="WIDTH: 115.5pt; HEIGHT: 64.5pt"><v:imagedata src="file:///C:\DOCUME~1\new\LOCALS~1\Temp\msohtml1\01\clip_image011.wmz" o:title=""></v:imagedata></v:shape><o:p></o:p>

图6 <o:p></o:p>

 
### 实体关系抽取方法 实体关系(Entity-Relationship, ER)模型是一种用于表示信息系统中数据对象及其之间联系的方法。为了有效地进行实体关系抽取,需遵循一系列原则和步骤。 #### 定义实体集 识别并定义系统内的主要实体集合是构建ER的第一步。这些实体通常是业务流程中的核心参与者或事物。例如,在书馆管理系统中,“书籍”、“读者”可视为两个基本实体[^3]。 #### 确定属性 对于每一个已确认的实体,都需要明确其具有的特性即属性。这一步骤至关重要,因为实体间的关联往往依赖于特定属性的存在与否。比如,“书籍”的ISBN号可以作为唯一标识符来区分不同书实例。 #### 建立关系 通过分析各实体间存在的交互模式,确立它们之间的逻辑连接形式——一对一、一对多或多对多的关系类型。这种关联不仅反映了实际操作场景下的互动情况,同时也为后续数据库表结构提供了基础框架[^1]。 --- ### ER绘制教程 创建有效的ER表有助于直观展示复杂的信息架构,并指导具体的数据库实现方案。 #### 工具选择 可以选择专业的软件工具如Erwin来进行ER的设计工作。这类工具有助于简化形化表达过程,支持自动生成对应的关系型数据模型及SQL脚本等功能。 #### 绘制指南 以下是使用通用符号体系制作ER的一些要点: - **矩形框**代表实体; - **椭圆圈**标记属性,其中加粗字体显示的是主键字段; - **菱形形状**用来描绘实体间的关系,内部注明具体名称; - 连接线两端附带箭头指示方向性和基数比例(0..n),以此说明参与度限制条件。 ```mermaid erDiagram CUSTOMER }o..|{ ORDER : places ORDER ||--|| LINE_ITEM : contains PRODUCT |p..|{ LINE_ITEM : appears_in ``` 上述Mermaid语法片段展示了客户下单购买商品这一简单交易行为所涉及的主要成分及其相互作用方式。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值