sql - 数据库设计建议
问题描述
我正在为以下情况寻找最佳的数据库解决方案。
考虑到我有一个父表 [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 个子表。
我们对此有一些解决方案吗?
解决方案
更多的数据不能导致更多的表,而是导致数据库中的更多行。
也就是说,您可能应该有一个学生和一个 student_report 表。然后在 student_report_table 中添加一些列,以便能够反映不同的报告。最简单的形式是唯一的报告类型:
- 学生(student_id,姓名,...)
- report_type(report_type_id,描述)
- student_report (student_id, report_date, report_type_id, ...)
推荐阅读
- python - 如何使用插补类将值替换为上一行中的值?
- python - 如何在 PyQt6 中设置窗口标志?
- python - 使用 PIP 安装手电筒
- typescript - 如何导入这个 JavaScript 库?
- javascript - 如何使用js从现有数组中删除所有对象?
- python - 在 python 中生成 n*n 网格时遇到问题
- c# - 为什么即使没有使用密钥,Kafka 也不会在分区上分发?
- flutter - 有没有办法从之前停止的地方播放视频?
- java - 无法从基于 Jersey 的 Web 应用程序中的 Spring Boot 的 application.properties 文件中读取任何值
- javascript - 提交按钮点击随机音频(JS)