史上最简单的数据建模教程一:实体关系建模

一、建模的流程

1. 概念模型阶段。

一般来说,概念模型阶段的主要任务是,通过5w1h的方法不断与客户沟通,搞清楚核心需求,这个项目的商业目的,都有哪些参与人员,人员角色是什么?都有哪些参与物件?行业常识。只要一张图搞定,花费时间应该在总项目时间的10%.

2. 逻辑模型阶段

实体定义和重要属性,比如客户、商品。实体之间的关系购买。占据项目的60%-70%的时间。如果实体超过100个,需要定义术语表。逻辑模型像一本书,需要生成数据字典。

3. 物理模型阶段

实体的所有的属性定义,关系的所有属性的定义,数据库的版本等都要确定。可以通过物理模型直接生成表。

二、核心概念

1. 实体。概念比较好理解,比如老师 教 课, 老师和课都是实体,实体通常是名词。教则是两个实体之间的关系。

2. 实体的属性。比较好理解,需要注意的是,实体的属性中通常会加入create_time和update_time属性,方便后期的统计,数据采集等工作。

3. 实体之间的关系。关系通常是动词,比如老师教课的教。需要注意的是,在梳理实体之间的关系的时候,需要确定是一对一,一对多,多对一,还是多对多的关系。通常采用四个问题来确定,还是以老师教课的例子来说明。

(1)一个老师是否教多门课程? ——可以

(2)一门课程是否多个老师来教? ——可以

前面两个问题可以确定多对多的关系

(3)是不是没位老师一定要教课? ——不一定

(4)每一门课程是不是一定要老师教? ——一定

三、逻辑模型和物理模型

1. 今天的内容非常简单,直接在最后给出概念模型、逻辑模型和物理模型,并通过物理模型直接生成sql语句。

2. 直接使用物理模型生成三张表的sql

drop table if exists teacher;

/*==============================================================*/
/* Table: teacher                                               */
/*==============================================================*/
create table teacher
(
   teacher_id           char(10) not null,
   teacher_name         char(10),
   primary key (teacher_id)
);
drop table if exists course;

/*==============================================================*/
/* Table: course                                                */
/*==============================================================*/
create table course
(
   course_id            char(10) not null,
   course_name          char(10),
   primary key (course_id)
);
drop table if exists teach;

/*==============================================================*/
/* Table: teach                                                 */
/*==============================================================*/
create table teach
(
   course_id            char(10) not null,
   teacher_id           char(10) not null,
   primary key (course_id, teacher_id)
);

alter table teach add constraint FK_teach foreign key (course_id)
      references course (course_id) on delete restrict on update restrict;

alter table teach add constraint FK_teach2 foreign key (teacher_id)
      references teacher (teacher_id) on delete restrict on update restrict;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值