有关数据库概念的建议

问题描述

我正在一个项目上,以创建一个新的Java EE应用程序(JSF,Hibernate,Spring Security,Informix数据库)。该应用程序将自动输入银行员工的年度采访记录。

一开始,所有内容都输入到Excel文件中,然后生成带有各种性能图的报告(根据从0到4输入的注释)。

现在,我想做一个相当优化的数据库设计。我想到了创建以下表格:

  • Interview,其中有列(interview_id,interview_date)
  • Competency,其中有列(competency_id,competency_group,competency_name)
  • Interview_note,其列为(interview_note_id,employee_id (FK),interview_id (FK),competency_id (FK))

但是,我对如何使其紧凑和合乎逻辑存在一些疑问。这是正确的做事方式吗?是否有任何改进要考虑以进行更多优化?

解决方法

在您的叙述和草稿数据库模式中,我发现了以下已标识的实体:EmployeeCompetencyInterviewInterview_note

在这方面,仅缺少Employee表,但是我确定您在某处。此外,您的设计非常灵活,因为它允许几个Interview_notes来自同一采访,能力和员工。因此,可能遗漏的是做笔记的人id。另外,如果面试只有一组笔记,则可以考虑在Interview中标识面试者。

其中的一部分,也许是笔记的某些缺失数据(分数,满意率或一些文字注释?),您的设计似乎可以达到其目的。

数据库引擎将很好地优化您必须执行的所有联接。也许可以通过将_id定义为主键来简化其工作。

我看不到其他优化方法:每个表都清楚地表示了一个不同的关系(在该术语的关系代数含义中),将其中任何一个合并将不可避免地导致次优方案的出现。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...