`

初次体验数据库设计

阅读更多

     今天初次了解了数据库的设计,体会到了数据库的设计的重要性。这是在工作中遇到的。

就是把学校里教师、年级、班级还有学科映射到数据库中。

     首先先说下这几个表的关系,很简单,教师对年级还有班级是多对多关系,教师对学科是多对一关系。

     先说我的最初的想法,很简单就是按照上面描述的关系,分别建立teacher,grade,class,subject四张表。

grade,class,subject表字段就是包括各自的信息。teacher表呢,有个teachername和subject_id,然后还有2个中间表grade_join_teacher和class_join_teacher分别来存放grade和teacher以及class和teacher的信息。这样的关系很直接,估计像我这样的新手都会这样想。可能是我对数据库理解不深,我觉得这样的多对多关系用hibernate来管理时,会遇到点麻烦的问题,比如说要删除teacher时,不能删除grade吧。或者只是把他们之间的关系删掉也就是只是删除中间表的信息等(这些也是之后要研究的一个问题)。在做这些操作的时候会比较麻烦。

   好现在来看看另外的设计,和上面的一样,grade,class,subject没有变,唯一变的是teacher表的字段,teacher表有teacherName,grade_id,class_id,subject_id。也许你一看这个可能差异,这样不是多对一吗。呵呵~其实那是理解错了,这个teacher表不是我们传统上的teacher~这个teacher表可以理解为教某班某年级某课程的教师。注意这里的teacher表的teachername是会有重复的,也就是说同一个教师的姓名可能会出现多次(假如这名教师是交多个班级的话)而第一种设计的teacher就是单是所有的老师,不允许同一个教师的姓名出现二次。这样第二种设计就不存在多对多的关系存在,teacher表和其他的三表都是多对一的关系。比第一种维护起来会好点。

    其实就是看问题的角度不同了,第一种呢是先将现实的每一个对象都在数据库建立一个对应的表。然后在更加现实的关系建立表与表之间的关系。而第二种呢是先考虑现实的每一个对象的关系,像本文中说的teacher,grade,class,subject。应为通过grade,class,subject的一个组合就可以确定一个teacher,这样将所有的grade,class,subject组合一边就可以得到所有的teacher。而且也无形中建立了teacher,grade,class,subject他们的关系

有点反过来的感觉。所以以后要多反过来想想。也不知道这样的设计叫什么名字。

分享到:
评论

相关推荐

    数据库课程设计心得体会6篇 (2).docx

    - **数据库设计难点**:初次接触数据库设计时,许多学生会感到困惑和挑战。尤其是对于初学者来说,如何准确理解需求并设计出合理的数据库架构是一项艰巨的任务。 - **设计原则**:明确了数据库设计的基本原则,包括...

    数据库课程设计心得体会_2.pdf

    4. **数据库设计与分析**:在数据库课程设计中,作者实践了数据库的设计和分析,深化了对存储过程的理解,构建了一个基于数据集的图书馆管理系统。 5. **架构选择**:作者了解到MVС(模型-视图-控制器)架构,这是...

    高校学生选课系统数据库设计 (2).docx

    ### 高校学生选课系统数据库设计知识点解析 #### 一、系统背景与意义 - **信息化改革背景**:随着计算机技术的迅速发展,信息化已成为推动各行各业进步的关键力量。对于高等教育领域而言,信息化改革不仅有助于...

    数据库课程设计心得体会.docx

    3. **数据库设计与分析工具**:在进行课程设计前,作者使用Rose UML进行软件建模,通过网络资源学习了UML建模,克服了对复杂概念的恐惧。在数据库分析阶段,PowerDesigner工具帮助作者进行更深入的设计工作。 4. **...

    数据库客户端工具A5 sql

    数据库客户端工具A5 SQL是一款专为数据库管理设计的专业软件,它提供了一个强大的界面来与各种类型的数据库进行交互。这款工具以其高效、用户友好的特性,让数据库管理员和开发人员能够轻松执行SQL查询、管理和维护...

    PHPStrom数据库驱动(全部驱动 )

    在IT行业中,集成开发环境(IDE)是程序员的得力助手,PHPStorm作为一款专为PHP开发者设计的强大IDE,提供...正确配置和使用这些驱动,可以让你在PHPStorm中无缝地管理和操作MySQL、SQLite等数据库,从而提升开发体验。

    数据库版员工管理系统

    综上所述,"数据库版员工管理系统"是一个涵盖数据库设计、SQL操作、前后端交互等多个方面知识的项目。它可以帮助学习者建立起对数据库系统全面的理解,并提供一个实践数据库应用的平台,对于提升数据库管理和软件...

    个人版数据库2000

    【个人版数据库2000】是一款专门为管家婆软件设计的数据库系统,它适用于32位的Windows 7操作系统。这个数据库系统的核心在于其简洁易用性和对中小型企业数据管理的适应性。在安装和使用过程中,用户可以享受到便捷...

    1.6数据库.zip_laborxck_架设问道_问道开服教程_问道数据库_问道端

    数据库的设计和管理对游戏的性能和玩家体验有着直接影响。可能在压缩包中,会有数据库的结构文件、初始数据导入脚本等,帮助用户快速建立和填充游戏数据库。 最后,提到的“问道端”可能是指游戏的服务端程序,也...

    数据库课程设计报告-药品管理系统.doc

    课程设计不仅提升了技术技能,如SQL语言、数据库设计原理的应用,更增强了对药品管理流程的理解,对实际工作具有积极的指导意义。 5.1 课程设计心得: 通过本次设计,我们认识到药品管理系统在实际操作中的复杂性...

    数据库实训心得体会.doc

    1. **需求分析**:需求分析是软件开发的第一步,对于数据库设计至关重要。明确需求能够避免在后期开发中出现范围蔓延,导致工程进度滞后。需求分析文档应详细记录各功能点,确保数据全面且满足用户需求。 2. **...

    NewsBank数据库使用说明目录 NewsBank数据库使用说明NewsBank数据库 .doc

    界面设计友好且易于使用,即使是初次接触数据库的用户也能快速上手。 总的来说,NewsBank数据库是一个全面、高效的信息检索平台,不仅为学术研究提供了丰富的原始资料,也支持教学活动和政策分析,对于学生、研究...

    软件工程与数据库课程设计--客户关系管理系统.docx

    数据库设计是客户关系管理系统的核心部分之一。本项目选择了关系型数据库MySQL作为数据存储解决方案。在设计过程中,需要重点考虑表结构的设计、索引的设置以及事务处理机制等,以保证数据的安全性、完整性和一致性...

    基于数据库的树形菜单组件

    1. 数据库设计:为了存储树形结构的数据,我们需要设计一个合适的数据库模型。这可能包括一个包含ID、父ID、名称等字段的表,其中父ID字段用于关联父节点和子节点。这样的设计允许我们通过SQL查询来获取指定节点的...

    数据库课程设计报告人事管理系统范本.docx

    #### 2.1 数据库设计 - **基本信息表**:该表记录了员工的基本信息,包括姓名、性别、出生年月、职称等字段。其中,“姓名”为必填项且作为主键,确保每个员工的唯一性。“出生年月”采用`datetime`类型,以便于进行...

    VC 树形菜单与数据库结合的例子.rar

    它涵盖了UI设计、数据库操作以及事件驱动编程等多个关键点,对于想要深入学习VC++ GUI编程和数据库应用的开发者来说,是一个非常有价值的参考资料。通过分析和理解这个例子,开发者能够更好地理解和掌握在实际项目中...

    数据库酒店管理系统.doc

    【酒店管理系统数据库设计】 在设计酒店管理系统的过程中,数据库设计是一个至关重要的环节,它涉及到系统功能的实现、数据的存储和管理。本系统旨在提供酒店管理的一体化解决方案,包括用户登录管理、住宿管理以及...

    QQ企业通 socket 包含数据库和程序使用说明

    通过阅读和分析这些源代码,开发者可以深入理解QQ企业通的架构设计,学习如何利用Socket进行网络通信,以及如何设计和优化数据库以适应企业级应用的需求。同时,这也是一个很好的实践案例,帮助开发者提升在网络编程...

Global site tag (gtag.js) - Google Analytics