实体关系图(ER图)

  实体关系图也是设计数据库的关键问题,同时开发工程师也需要理解系统设计人员发布的ER图。是开发不可避免并经常用到的问题。所以加以论述。而本章使用的Microsoft SQL Server2000。由于其简单易用,是学习的好工具,所以采用。采用ERwin也是由于许多的开发商使用和简单易用的特性的原因,另外用得好的是PowerDesigner由于稍显复杂,故未采用。

 实体关系图(ER)

  在下面的具体实例中,使用的是PetShop数据库(网络上传播的为微软的.net的测试数据库,下载地址http://www.qddown.com/down.asp?id=2475&no=1.本文使用的是Petshop( 1.5.2 ).msi版本).ER建模工具为Erwin4.1.4.1是其表结构在ERwin下的ER.

1

3.1 11关系

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

2

3.2 1对多关系

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

3

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

图4

3.3 多对多关系

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

5

3.4 无任何约束的表

     没有限制的表,如图6:

图6

 
05-19
### ER的概念 ER(Entity-Relationship Diagram),即实体关系,是一种用于描述数据库中实体及其之间关系的形化建模工具。它主要用于概念设计阶段,帮助开发者清晰地表达系统的数据结构和逻辑关系[^1]。 实体是指现实世界中有意义的对象或事物,可以是有形的也可以是无形的。例如,“学生”是一个实体,“课程”也是一个实体。属性是用来描述实体特征的具体信息项,如学生的“学号”、“姓名”等都是属性。键则是用来唯一标识某个实体的一组属性,通常用下划线标注在ER中[^3]。 ### ER的绘制方法 #### 确定实体 根据业务需求和数据分析的结果,明确系统中存在的所有实体。这些实体通常是系统中需要管理的主要对象。例如,在一个学生管理系统中,“学生”、“教师”、“课程”都可以被定义为实体[^2]。 #### 定义属性 对于每一个确定的实体,为其分配一组能够充分描述该实体特性的属性,并指定每种属性的数据类型以及可能的约束条件。例如,“学生”的属性可以包括“学号”(字符串)、“姓名”(字符串)等[^3]。 #### 识别关系 分析各个实体间存在的关联方式,判断它们之间的关系类型是一对一、一对多还是多对多的关系形式。这种关系反映了不同实体间的交互模式或者依赖程度。例如,“一名老师教授多个课程”,这体现了一对多的关系;而“多名学生选修多门课程”,则体现了多对多的关系[^1]。 #### 绘制ER 利用专门的设计软件(如Microsoft Visio, ERwin等)按照既定标准创建ER表。在这个过程中,通过矩形框代表实体,椭圆表示属性,菱形标志联系,并借助线条连接各部分来直观展示整个模型架构。同时在线旁边标记具体的数量词(‘1’ 或 ‘n’)以进一步说明联系性质[^2]。 #### 审核与调整 完成初步草稿之后,仔细审查所构建出来的ER是否全面覆盖了所需处理的信息领域,并且保持一致性无误。依据反馈意见做出相应修正直至达到满意效果为止[^1]。 ```python # 示例代码:Python实现简单的ER解析器雏形 class Entity: def __init__(self,name): self.name = name self.attributes = [] def add_attribute(self,attribute_name,type_="string"): new_attr={"name": attribute_name,"type": type_} self.attributes.append(new_attr) student_entity=Entity('Student') student_entity.add_attribute('ID','integer') # 学生编号设为整数型 print(student_entity.__dict__) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值