第二部分 实体、属性和关系

前言:对于数据建模最重要的三项技能
1.了解业务知识的能力;
2.语言沟通能力;
3.数据库的规范化知识。 这一系列涉及到的只有语言沟通能力和数据库的规范化知识,但是能被呈现在博客里的只有数据库的相关规范知识。
沟通技巧:

澄清
实践
探索
确认

一、实体

实体一般是名词,表示的是人、事、物的抽象化对象,比如:员工、公司等等。在数据库中实体就是表,实例就是一行行的数据。

1.举个栗子

带着你的女朋友走进一家化妆品店销售人员询问女友的购买意向并且根据购买意向,以及她皮肤的特质向你们推荐一款适合她皮肤的化妆品 。你女友办理了 会员卡,然后你在 收银员刷卡消费
你,你的女朋友–> Customer
化妆品店 --> Store
销售人员,收银员 --> Employee
化妆品 --> Product
会员卡 --> VIP Card
皮肤特 质 --> Skin
购买意向–> Indicated Order
POS机 --> Resource Item
刷卡消费–> Order

2.实体的分类:按照含义分类(5W1H)

分类举例
Who客户,员工,患者,学生,旅客,代理商,公司,部门,等等
What商品,产品,原材料,服务,成品,半成品,课程,书籍,等等
When时间,日期,周,月份,季度,半年,财年
Where商店、餐厅、地址、仓库、IP 地址, Web Site
Why订单、销售、采购、促销、投诉、交易
How合同、协议、发票

3.实体的分类:按照 Pattern 分类

(1)主实体(基本实体):客户,包含属性客户编码、客户地址、客户联系人
(2)子类型实体:潜在客户,不仅包含上面客户的属性,还包含当前机会、购买意向等其他特有属性
(3) 属性类实体:由属性引发的实体,比如客户地址,包含了客户编码、地址类型、地址等属性
(4)关联实体:客户实体和员工实体是通过销售代表分配表关联的

二、属性

对于属性的描述在上面已经有所涉及,具体定义就不做记录了。

1.属性的分类:按照内容分类

ID,时间相关、任务相关、地点相关、数量、状态等等

2.属性的特性

(1)强制还是可选?
(2)原子还是组合?直接还是派 生?
(3)单值还是多值?
(4)是否是可选键?
(5)属性的数据类型是什么?
(6)属性是否有默认值?
(7)派生属性是如何计算的?

3.属性的取值

这个就是根据各个数据库的特性涉及,比如mysql 字符串有char、varchar、文本有text,时间有datetime等等

三、域

1.定义

属性的所有取值的集合,可以理解成自定义的一种数据类型,并且还能带有约束

2.域的优点

(1)挺高数据质量;
(2)使数据模型易于理解和便于沟通;
(3)标准化,提高建模效率和模型质量。

3.域的缺点

一旦修改与就会修改使用域的所有字段,进而可能影响存储性能、表空间的使用等。比如,域中的字段原来是varchar(10),现在有一个字段增长到了varchar(100),然后改成了varchar(100),对应的所有字段都被改成varchar(100),消耗的存储空间会增大,原来分配的表空间也可能不够用了。

三、关系

1.定义

通常是动词,比如老师教课程中的“教”。用于表示实体和实体之间的关系。
在概念模型层级,存在一对多、多对一、多对多等情况,而在逻辑模型和物理模型层级,需要消除多对多的情况。

2.方法

用问题确定关系:
Q1 一 位老师可以教多门课吗?
A1 可以
Q2 一 门课程可以多个老师教吗?
A2 可以
Q3 是不是每位老师 一定要教课?
A3 不一 定,比如管教务的老师,比如管实验室的老师他们不用教课
Q4 是不是每门课程 一定要有老师教?
A4 假设大学而言,是的。

感想:感觉这系列课程更像是数据库模型设计(ETL工程师)的理论课程, 为了使用powerDesign之类的软件学习的理论学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值