• 0
  • 0
分享
  • 数据库设计规范——软件测试圈
  • 北极 2022-10-12 15:51:20 字数 1005 阅读 1141 收藏 0

一、数据规范化

仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构

Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构

这些范式是:

1、第一范式(1st NF -First Normal Fromate)

2、第二范式(2nd NF-Second Normal Fromate)

3、 第三范式(3rd NF- Third Normal Fromate)

第一范式 (1st NF):

1.png

第一范式的目标是确保每列的原子性

如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

第二范式 (2nd NF):

2.png

如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)

第二范式要求每个表只描述一件事情

第三范式 (3rd NF):

3.png

如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)

二、规范化实例

假设某建筑公司要设计一个数据库,公司的业务规则概括说明如下:

1、公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等

2、公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等

3、公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与

工程师不同)

4、公司定期制定一个工资报表

如图所示(工资表):

4.png

如图所示(工时表):

5.png

表中包含大量的冗余,可能会导致数据异常:

更新异常 :

------例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行

添加异常:

------若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)

删除异常:

------例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据

采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。

应用范式规范化设计

一张表描述了多件事情

6.png

应用第二范式规范化

7.png

应用第三范式规范化

8.png


作者:网易测试开发猿

原文链接:https://blog.csdn.net/shuang_waiwai/article/details/121500382

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:文件上传和下载,用例怎么写 ?阿常回答:我们先分别给文件上传一个特定的场景。文件上传:每个文件大小不超过 20M,文件个数不超过 10个,文件格式不限。一、文件上传测试点一)文件大小1、文件大小 0 KB,上传时是否有提示。2、文件大小 19.8 M,是否能上传成功。3、文件大小 20.2 M,是否能上传成功。4、文件大小,是提交前校验,还是提交后校验。二)文件个数1、上传文件个数 1个,是否能上传成功。2、上传文件个数 10个,是否能上传成功。3、上传文件个数 11个,上传时是否有提示。4、上传文件个数,是提交前校验,还是提交后校验。三)文件格式1、验证所有支持...
            0 0 1198
            分享
          •   春节档的相关热门话题仍在继续,只不过影迷已经从各影片内容方面的争论,拓展到了对周边衍生品的关注上。  舆论关注度最高的是科幻大片《流浪地球2》的周边产品。外骨骼装甲、行星发动机、门框机器人、机械合金旋挖钻机模型、机械小狗笨笨……关于春节档大片的周边产品,在社交媒体、电商平台上轮番被讨论。  其中,阿里鱼旗下的娱乐电商平台“造点新货”,以众筹形式推出的《流浪地球2》的官方周边衍生品热度最高:截至1月29日14点,该平台有关《流浪地球2》的周边众筹金额累计超过8000万元,并且仍在不断地增长,打破中国文娱类众筹纪录。图源淘宝App  这源于这届影迷对春节档影片的热情。今年属于疫情防控放开后第一...
            0 0 996
            分享
          • 一、功能测试用例的设计举例:(一)我想要回家,让你给我买一张票,然后设计测试用例答案:确定需求(回家回哪,需要什么票,买什么时候的票)开始测试功能测试(我去买票(买火车票,飞机票),买到票(什么时候),回来给你);可靠性测试(我去买票过程中被撞死了,票买不到怎么办,延期了,买那个点的票没了怎么办让我帮他买票的人的身份,比如是否有特殊优待,如军人,1米2以下儿童等,身份证丢了,或者票丢了,责任划分);可维护性测试(票是否可保存完好);兼容性(还不同人的去买,我中间招人去买,我坐车走路);算法测试(我通过不同的渠道买票花费的时间);竞品测试(别的人怎么买的票);安全性测试(身份信息保密);性能测试...
            0 0 1287
            分享
          • 一、选择题1、对计算机软件和硬件资源进行管理和控制的软件是(D)文件管理程序输入输出管理程序命令出来程序操作系统2、在没有需求文档和产品说明书的情况下只有哪一种测试方法可以进行的(A)错误推测法测试路劲分析测试语句覆盖测试条件覆盖测试3、某测试人员通过执行测试软件测试的方法对当前功能进行了测试,该测试人员使用的测试方法为(C)静态测试单元测试黑盒测试4、编写测试计划的目的是(ABC)多选题使测试工作顺利进行使项目参与人员沟通更舒畅使测试工作更加系统化软件工程以及软件过程的需要软件过程规范化的要求控制软件质量5、关于软件测试与软件开发的认识,不正确的是(B)软件生命周期各个阶段都可能产生测试软件...
            14 17 3575
            分享
          • 易用性测试是否有快捷键,快捷键不能重复;是否有热键,热键不能重复;不要用数据将用户包围,使用便于拥护迅速吸取信息的方式表现信息;减少用户输入动作数量;默认按钮要支持Enter操作,即按Enter后自动执行默认按钮对应操作;完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离;同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示;分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab;消除冗余输入,绝不要让用户提供程序中可以自动获取或计算出来的信息;遵循可不用鼠标的原则:应用中的功能只用键盘也应当可以完成;为手工录入部分提供快速键盘录入方式,能仅使用小键盘时尽...
            0 0 947
            分享
      • 51testing软件测试圈微信