如何存储主表数据

时间:2019-05-15 06:52:00

标签: php mysql symfony

我参与了一个项目,该项目的表具有需要逐年更新的主数据。

例如,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

如何以更好的方式设计此表。

1 个答案:

答案 0 :(得分:1)

这取决于您要实现的目标。但是从您的问题详细信息中,我可以假定您需要一个包含所有不同课程的表。

课程

+-----------+---------+
| COURSE_ID |  NAME   |
+-----------+---------+
|         1 | Math    |
|         2 | Science |
+-----------+---------+

还有历史记录表

courses_years

+-----------+------+
| COURSE_ID | YEAR |
+-----------+------+
|         1 | 2018 |
|         1 | 2019 |
|         2 | 2019 |
+-----------+------+

第一个表是包含所有原子实体的主表。您有一个基于自动递增编号(这是有问题的,但这是另一个问题)和名称唯一约束的主键。

第二张表只是您的课程历史记录的日志表。您有一个指向 course_id 的外键和一个基于两列的主键。