【问题标题】:MySQL table design to save multiple dates for trainingMySQL 表设计可保存多个训练日期
【发布时间】:2021-04-03 14:46:38
【问题描述】:

我正在开发一个网络应用程序来跟踪培训日期。

对于通常情况,培训日期通常为 2020 年 6 月 10 日 - 2020 年 6 月 12 日。 这对于数据库表列 training_start_date 和 training_end_date 来说是直截了当的

如果我们有 2020 年 6 月 10 日至 12 日、15 日、16 日这样的培训日期怎么办? 我将如何为上面的培训日期示例设计表格?

谢谢。

【问题讨论】:

  • 对于单日培训,您可以将 training_start 和 training_end 设置为同一日期,但时间不同,例如 training_start = '2020-06-16 08:00:00' 和 training_end = '2020-06-16 17:30:00'

标签: php mysql sql laravel database-design


【解决方案1】:

如果一个培训可能有多个课程,那么我会推荐两张桌子。

create table trainings (
    training_id int primary key auto_increment,
    name        varchar(50)
);

create table sessions (
    session_id int primary key auto_increment,
    training_id int,
    date_start  datetime,
    date_end    datetime,
    constraint training_fk 
        foreign key (training_id) references trainings(training_id)
);

父表存储有关培训的信息,而子表包含每个培训课程的一行。我使用了datetime,因为您可能还想存储一个时间组件。否则,您可以使用date

【讨论】:

    【解决方案2】:

    经典的主细节设计。

    一个包含主信息(培训、事件)的表和一个包含详细信息的表,用外键引用主表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      • 2022-10-17
      • 1970-01-01
      • 2021-04-11
      • 2013-09-11
      相关资源
      最近更新 更多