【问题标题】:Confusion to form MySQL Primary & Foreign Key constraints混淆形成 MySQL 主键和外键约束
【发布时间】:2025-11-26 11:05:02
【问题描述】:

我正在建立一个网站,教师可以在其中上传课程然后发布。我正在计划数据库,我有几个问题。请考虑以下表格:

instructors(id(PK), fullname, email, password, created, updated)
categories(id(PK), title, description, created, updated)
courses(id(PK), cat_id(FK), instructor_id(FK), title, description, created, updated)
lessons(id(PK), course_id(FK), title, description, duration, created, updated)

我已经在所述表之间建立了基本关系。现在的问题是:

  • 我想检查特定lessoncategory
  • 我想检查lessons 是否属于特定的category

如果我将category_id 作为外键放在lessons 表中会好吗?这样我就可以通过加入表格来lessons 在一个类别中。对于反向关系,我也可以通过选择course来选择category

请帮帮我。提前致谢。

【问题讨论】:

    标签: mysql sql relationships


    【解决方案1】:

    如果一堂课有 0 或 1 个“类别”,那么您可以将 category_id 放入 lessons。这是恰当和正确的。

    如果一个课程可以有多个类别,那么您需要一个连接表:

    create table lesson_categories (
        lesson_id . . .,
        category_id . . .,
        constraint fk_lesson_categories_lesson foreign key (lesson_id) references lessons(id),
        constraint fk_lesson_categories_category foreign key (category_id) references categories(id)
    );
    

    【讨论】:

    • 感谢@gordon Linoff 的帮助。我明白了。