【实习日记】第五天

      今天是实习的第五天,在昨天我们的项目实现了对数据库的增删改查操作,今天我们需要实现用户权限功能,即对管理员提供用户管理和角色管理,对普通用户仅提供用户管理功能。

       实现权限管理首先需要建立一张tb_role表,存放了不同的角色、角色id以及角色描述,同时为了描述角色表和用户表之间的关系,需要再建立一张关系表user_role,将userId作为用户表的外键,将roleId作为角色表的外键,这样三张表就建立完成了。

      

     看到这里我不禁想到,为什么要设计三张表而不用一张表直接来存放信息呢?于是我复习了一下之前数据库中所学的知识。

      设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

1、第一范式(1NF):

       所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

       在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

2、第二范式(2NF)

        在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

        第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加)

        第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

3、第三范式(3NF)

        在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

        第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

 

      综上可知,第二范式规定,非码属性必须依赖于候选码,而不是候选码的一部分,如果将所有数据保存在一张表中,因为一个用户可能有多个角色,所以候选码为用户id和角色id组成的复合码,但是用户名username依赖于用户Id,角色描述roledesc也依赖于角色id,即存在非码属性依赖于候选码的一部分,为了减小冗余,必须将数据分开成多张表。

      在今天的实习中,我最终实现了权限管理功能,在这个过程中我对数据库设计的相关概念的理解也更深入了,希望自己继续加油!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试实习日记(共计3000字) 第一: 今是我软件测试实习的第一,我来到了公司的测试部门。首先,我和我的导师进行了简单的介绍和交流,他向我介绍了公司的测试流程和工作内容。然后,我开始熟悉测试环境和工具的使用,包括测试管理工具、缺陷管理工具等。在导师的指导下,我还学习了一些基本的测试技术和方法。今的实习经历让我对软件测试有了更深入的了解。 第二: 今我开始参与到项目的测试工作中。我首先阅读了项目的需求文档和设计文档,了解了项目的功能和设计思路。然后,我根据需求文档编写了测试用例,并进行了测试计划的制定。在导师的指导下,我还学习了如何进行黑盒测试和白盒测试。通过今的实践,我对测试用例的编写和测试计划的制定有了更深入的理解。 第三: 今我开始执行测试用例,并记录测试结果。在执行测试用例的过程中,我发现了一些功能上的问题,并及时向开发人员反馈。同时,我还学习了如何使用调试工具来定位问题,并进行了一些简单的调试工作。通过今的实践,我对测试执行和问题定位有了更深入的了解。 第四: 今我继续执行测试用例,并记录测试结果。在测试过程中,我发现了一些性能上的问题,并及时向开发人员反馈。同时,我还学习了如何使用性能测试工具来进行性能测试,并进行了一些简单的性能测试工作。通过今的实践,我对性能测试有了更深入的了解。 第五天: 今我参与了项目的集成测试工作。我首先了解了项目的集成测试计划和测试环境的搭建情况。然后,我根据集成测试计划编写了集成测试用例,并进行了集成测试的执行和记录。在导师的指导下,我还学习了如何进行接口测试和系统测试。通过今的实践,我对集成测试有了更深入的了解。 第六: 今我参与了项目的回归测试工作。我首先了解了项目的回归测试计划和回归测试环境的搭建情况。然后,我根据回归测试计划编写了回归测试用例,并进行了回归测试的执行和记录。在导师的指导下,我还学习了如何进行自动化测试和持续集成。通过今的实践,我对回归测试有了更深入的了解。 第七: 今我参与了项目的验收测试工作。我首先了解了项目的验收测试计划和验收测试环境的搭建情况。然后,我根据验收测试计划编写了验收测试用例,并进行了验收测试的执行和记录。在导师的指导下,我还学习了如何进行用户体验测试和安全性测试。通过今的实践,我对验收测试有了更深入的了解。 第八: 今我参与了项目的文档编写工作。我首先整理了项目的测试文档,并进行了一些修改和完善。然后,我根据项目的需求和设计文档编写了测试报告,并进行了一些简单的数据分析。在导师的指导下,我还学习了如何进行缺陷分析和风险评估。通过今的实践,我对测试文档编写有了更深入的了解。 第九: 今我参与了项目的团队会议。在会议上,我向团队成员汇报了我的实习进展,并分享了一些测试经验和技巧。同时,我还听取了其他团队成员的报告和分享,并进行了一些讨论和交流。通过今的团队会议,我对团队协作和沟通有了更深入的了解。 第十: 今我参与了项目的总结和评估工作。我首先对我的实习经历进行了总结和反思,并提出了一些改进的建议。然后,我参与了项目的评估工作,对项目的测试质量和效果进行了评估和分析。在导师的指导下,我还学习了如何进行测试过程改进和质量管理。通过今的实践,我对测试总结和评估有了更深入的了解。 第十一: 今我参与了项目的知识分享和培训工作。我首先准备了一个关于软件测试的主题演讲,并向团队成员进行了分享。同时,我还参与了一些培训活动,学习了一些新的测试技术和方法。通过今的实践,我对知识分享和培训有了更深入的了解。 第十二: 今我参与了项目的客户交流和支持工作。我首先与客户进行了一次电话会议,了解了他们对项目的需求和期望。然后,我根据客户的反馈和问题提供了一些解决方案和支持。在导师的指导下,我还学习了如何进行客户管理和需求分析。通过今的实践,我对客户交流和支持有了更深入的了解。 第十三: 今我参与了项目的质量保证工作。我首先了解了项目的质量保证计划和质量保证流程。然后,我根据质量保证计划进行了一些质量度量和分析工作。在导师的指导下,我还学习了如何进行质量度量和质量改进。通过今的实践,我对质量保证有了更深入的了解。 第十四: 今我参与了项目的技术支持工作。我首先了解了项目的技术支持计划和技术支持流程。然后,我根据技术支持计划提供了一些技术支持和解决方案。在导师的指导下,我还学习了如何进行问题分析和解决。通过今的实践,我对技术支持有了更深入的了解。 第十五: 今是我软件测试实习的最后一。在这段时间里,我通过参与项目的测试工作,学习了很多软件测试的知识和技能。我不仅熟悉了测试流程和工具的使用,还掌握了一些测试技术和方法。通过实习,我对软件测试有了更深入的了解,并提升了自己的实际操作能力。我相信这段实习经历对我的职业发展会有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值