1、需求文档 2、数据流图 3、数据字典 4、概要设计 5、逻辑设计(本课程只到这一步) 数据流图: 方框里是角色,圆里是动作,箭头是信息的变换,长等号上面是待修改的信息。 数据字典:是个列表。它不只说明字段,而是对数据流中各个元素进行说明。 新感悟:设计表时,面对数据流图,应该先看靠近初始角色的第一个动作,它要操作啥字段,再倒推看角色,补上表的基本字段,根据一事一地原则决定表的字段设计, 然后再跟着流程图往后看,脑子里带着这张表,遇到什么动作,再想这个表要不要加一列。或者加联系表。所以只有两种表,实体表,实体之间的关系表。 不同的流程线路(不同的业务),那就可以设计不同的表。 角色是代码里的枚举值,可以不设置表。 比如,初始角色是学生,最近的第一个动作是教务处审核学籍信息,第二是录入期末成绩。看第一个动作,要审核,它肯定看一条数据,然后点审核按钮,修改status字段,那我倒推看角色,是学生,那学生是对象,建个学生表,要有学号、姓名、年龄、专业等基本信息,还要加个学籍状态字段待审核。 然后看第二个动作,期末成绩,每个学生都有,每个课都有,并且随着学生的增加,数据量不断增大,所以首先要考虑做成分区表,每年学生数量固定,所以可以按年分区,表里得有学号、教师id、课程id、学年、成绩。这样设计合不合适呢?成绩是个对象,但他有不同属性,比如课程,满足一事一地,有三个外键,其中学号和课程id组成联合主键。 如果每门课设计一张表,没啥区别,所以这样设计合理。 按照这个思路,就能设计表了。 投影:比如两列单独拿出来。 笛卡尔积:不同集合的列名相加,元组相乘。 R:n目关系,k1个元组 S:m目关系,k2个元组 笛卡尔积就是: 列:n+m 行:k1*k2 数学中的 {形式|内涵},形式就是 表示为什么样,内涵就是需要满足什么条件。 第一范式:列不可再分 第二范式:主键多对一或一对一其他字段 第三范式:其他字段之间,没有传递关系 比如学号,系号,系名 学号到系名在逻辑上就通过系号传递了,所以系名不能在这个表里 码(候选码):一个或一组属性能确定其他属性,他就叫做码或键或候选码或候选键。 闭包:根据一个定理推出的所有规则。 实体表得有属性。 联系也用表来表示。 有其他属性,参与其他联系,就作表,不然可作属性。 er 图中码要加下划线。
标签:动作,角色,学号,数据库,建模,笔记,学生,数据流,设计 From: https://www.cnblogs.com/zhaot1993/p/17799243.html