mysql - 在 sql 单元格中传递多个前值
问题描述
我有两个表 tb_schools(school_id,school_name), tb_programms(pid,p_name,school_id)
如果假设多所学校提供相同的程序,那么我该如何设计数据库。我的意思是我可以通过 tb_programms 的 school_id 中的 school_id 列表,如 [sc1,sc2,sc3]。
注意:我不能为单个程序添加多行。
解决方案
如果多所学校提供相同的课程,您需要以不同的方式设计您的架构。规范的解决方案是有一个学校表,一个项目表,以及每个学校举办的项目的映射表。例如:
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)
);
推荐阅读
- scala - 如何在 spark scala 中使用特定键(我需要主机和 ip 值)检索以下数据?
- symfony - Symfony 更新 twig.form.renderer 到 3.4
- jvm - Heapdump 中的 RingBufferLogEvent 大小
- html - Flexbox - 需要获得不同高度的单个 div 框的水平行,以便垂直地相互坐下
- cmake - 有什么方法可以使用带有 cmake “target_link_libraries” 的 libtool “.la” 文件
- r - 运行多个回归时正确处理单列中的 NA
- postgresql - 由于迁移由另一个应用程序处理,如何在无法迁移表的情况下对 Laravel 应用程序进行单元测试
- android - 带有抽屉/片段的android项目中的双工具栏排序
- scheme - 如何设置函数语法
- php - 如果值在数据库中,则禁用复选框