我参与了一个项目,该项目的表具有需要逐年更新的主数据。
例如,2018年的课程列表表
table_course
id name
1 Maths
2 Science
2019年的课程列表表
id name
1 Social
2 Language
我们设计了
id name year
1 Maths 2018
2 Science 2018
3 Social 2018
4 Language 2018
如何以更好的方式设计此表。
答案 0 :(得分:1)
这取决于您要实现的目标。但是从您的问题详细信息中,我可以假定您需要一个包含所有不同课程的表。
课程
+-----------+---------+
| COURSE_ID | NAME |
+-----------+---------+
| 1 | Math |
| 2 | Science |
+-----------+---------+
还有历史记录表
courses_years
+-----------+------+
| COURSE_ID | YEAR |
+-----------+------+
| 1 | 2018 |
| 1 | 2019 |
| 2 | 2019 |
+-----------+------+
第一个表是包含所有原子实体的主表。您有一个基于自动递增编号(这是有问题的,但这是另一个问题)和名称唯一约束的主键。
第二张表只是您的课程历史记录的日志表。您有一个指向 course_id 的外键和一个基于两列的主键。