首页 > 数据库 >高级数据库建模与设计笔记

高级数据库建模与设计笔记

时间:2023-10-30 23:57:44浏览次数:34  
标签:动作 角色 学号 数据库 建模 笔记 学生 数据流 设计

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

相关文章

  • 第二章读书笔记——雷凯化
        22信计1班雷凯化学号2022310143043  03运行超市抹零行为a=float(input('扫描的第一个商品价格:'))b=float(input('扫描的第二个商品价格:'))c=float(input('扫描的第三个商品价格:'))d=a+b+cprint('总计:',int(d))print('from22信计1班雷凯化')print('......
  • 用migrate将映像数据写入数据库常见问题01
    django开发时,models.py文件创建正常,makemigrations也正常,但migrate却提示没有需要迁移的数据,查看sqlite数据库也没有建立相应的数据表。相关文件#coding:utf-8#file-name:models.pyfromdjango.dbimportmodelsclassDepartment(models.Model): '''部门表''' title=mode......
  • 备份数据库文件至OSS服务(纯shell脚本无sdk)
    背景:凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSSSDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSSSDK......
  • 数论学习笔记
    整除若\(a/b(b\ne0)\)为整数,则称\(b\)整除\(a\),记作\(b\mida\)。若\(a/b\)和\(c/b\)的余数相等,则称\(a,c\)模\(b\)同余。同余关于同余,有以下命题等价:\(a\)和\(b\)是模\(d\)同余的。存在某个整数\(n\),使\(a=b+nd\)。\(d\)整除\(......
  • 《代码大全2》阅读笔记
    错误处理程序1.处理预料中可能要发生的错误,在程序的正确性与健壮性间平衡;2.方法:返回中立值、换用下一个正确的数据、返回与前次相同的数据、换用最接近的合法值、把警告信息记录到日志文件中、返回一个错误码、调用错误处理子程序或对象、当错误发生时显示出错信息、用最妥当的......
  • 学习笔记432—VBM_DARTEL算法对灰质变化的计算
    VBM_DARTEL算法对灰质变化的计算根据一些文献得知,VBM目前比较新的算法是DARTEL算法,这一算法被集成在SPM里,这里记录一下做法。VBM是对T1像进行分割得到灰质等。所以要有结构T1加权像数据。整个流程应该是这样:1.手动调整前联合(AC)首先就是需要我们自己手动调整一下结构像,打开SPM,sp......
  • 论文阅读笔记——LAVA: Large-scale Automated Vulnerability Addition
    LAVA:Large-scaleAutomatedVulnerabilityAdditionBrendanDolan-Gavitt∗,PatrickHulin†,EnginKirda‡,TimLeek†,AndreaMambretti‡,WilRobertson‡,FrederickUlrich†,RyanWhelan†(Authorslistedalphabetically)∗[email protected]......
  • 【Redis使用】一年多来redis使用markdow笔记总结,第(1)篇:Redis命令详解
    Redis是一个高性能的key-value数据库。本文会让你知道:什么是nosql、Redis的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中list保存的数据类型、使用StrictRedis对象对string类型数据......
  • 阅读笔记:《软件需求分析》阅读笔记四
    软件需求分析是软件工程中至关重要的一部分,它涉及到确定和记录系统或应用程序的功能和性能需求,以便开发团队可以理解和满足用户的期望。在进行软件需求分析时,需要考虑各种因素,包括用户需求、系统约束、功能规范等等。本次笔记将继续探讨软件需求分析的重要性以及一些常用的技术和......
  • 数据库JDBC
    1.JDBCjavadatabaseconnectivityjava数据库的连接。java中针对操作数据库,提供的⼀套规范,⽐如⼀些接⼝。2、.jar包(8.x的,5.x的)3、操作DriverManager注册驱动创建连接。Connection数据库的连接对象。Statement执⾏sql语句的对象。Result查询......