首页 > 解决方案 > 数据库设计建议

问题描述

我正在为以下情况寻找最佳的数据库解决方案。

考虑到我有一个父表 [P1],其中包含列 [ ID | 学生证 | StudentName ],以及从 P1 派生的多个子表,比如说 C1、C2、C3 ... [This grows ],其中每个表的复合主键是 [StudentID , ReportingDate] 和其他与表相关的事实数据。

我有一个用例,如果给定 StudentID,我需要给定键的所有表中的记录列表,格式为 [表名 | 学生证 | 报告日期]。

样本输入:

搜索 STD1

样本输出:

Table Name| Searched Key | ReportingDate
C1 | STD1 | Date1
C3 | STD1 | Date1
C1 | STD1 | Date2

子表是基于不同日期的 StudentID 生成的不同报告,并且会不断增长。

我无法连接不断增长的子表。假设我有 30 - 40 个子表。

我们对此有一些解决方案吗?

标签: sqldatabase-designrelational-database

解决方案


更多的数据不能导致更多的表,而是导致数据库中的更多行。

也就是说,您可能应该有一个学生和一个 student_report 表。然后在 student_report_table 中添加一些列,以便能够反映不同的报告。最简单的形式是唯一的报告类型:

  • 学生(student_id,姓名,...)
  • report_type(report_type_id,描述)
  • student_report (student_id, report_date, report_type_id, ...)

推荐阅读