首页 > 解决方案 > 在 sql 单元格中传递多个前值

问题描述

我有两个表 tb_schools(school_id,school_name), tb_programms(pid,p_name,school_id)

如果假设多所学校提供相同的程序,那么我该如何设计数据库。我的意思是我可以通过 tb_programms 的 school_id 中的 school_id 列表,如 [sc1,sc2,sc3]。

注意:我不能为单个程序添加多行。

标签: mysqlsql

解决方案


如果多所学校提供相同的课程,您需要以不同的方式设计您的架构。规范的解决方案是有一个学校表,一个项目表,以及每个学校举办的项目的映射表。例如:

CREATE TABLE tb_schools (
    school_id INT AUTO_INCREMENT PRIMARY KEY,
    school_name VARCHAR(30) NOT NULL
);

CREATE TABLE tb_programs (
    pid INT AUTO_INCREMENT PRIMARY KEY,
    p_name VARCHAR(30) NOT NULL
);

CREATE TABLE tb_school_programs
    sid INT NOT NULL,
    pid INT NOT NULL,
    PRIMARY KEY (sid, pid),
    FOREIGN KEY (sid) REFERENCES school(school_id),
    FOREIGN KEY (pid) REFERENCES programs(pid)
);

推荐阅读