【问题标题】:Any simple way to set one primary key as a foreign key to multiple tables将一个主键设置为多个表的外键的任何简单方法
【发布时间】:2017-05-25 15:28:43
【问题描述】:

我有一张桌子

program(p_id(pk), program_name)

和其他三个表:

graduate_survey(id(pk),PO1_avg,PO2_avg,program_name,session),

alumni_survey(id(pk),PO1_avg,PO2_avg,program_name,session),

faculty_survey(id(pk),PO1_avg,PO2_avg,program_name,session)...

我必须将三个表与程序表链接...如何在 MySQL 中链接这些表? graduate_survey, alumni_survey,faculty_survey 是一些针对某些特定程序计算的表格...如果在表格中 graduate_surveyalumni_surveyfaculty_survey 没有用于输入程序名称的文本框,但是如果我做了一个列名数据库表中的“程序名”,我可以通过引用program 表来输入程序名吗?会有join查询吗?

【问题讨论】:

    标签: mysql database join wamp


    【解决方案1】:

    在其他表中使用程序 id 作为外键,如下所示:

    program(p_id(pk), program_name)
    graduate_survey(id(pk),PO1_avg,PO2_avg,p_id(fk),session), 
    alumni_survey(id(pk),PO1_avg,PO2_avg,p_id(fk),session), 
    faculty_survey(id(pk),PO1_avg,PO2_avg,p_id(fk),session)
    

    为了 FK 约束,您并不真的需要程序名称,但在某些时候它仍然是一件好事,也许。

    这样你就可以根据p_id轻松加入了,比如:

    "SELECT * FROM program INNER JOIN graduate_survey ON program.p_id=graduate_survey.p_id WHERE <your condition here>"
    

    希望这会有所帮助。

    【讨论】:

    • 加入后在graduate_survey中插入值怎么办?会有insert-select操作吗?
    • 插入语句在连接后看起来是一样的。连接实际上并不连接数据库中的表,只是连接到您的查询结果中。所以插入语句:'INSERT INTO 'graduate survey'(PO1_avg, PO2_avg, p_id, 'session') VALUES ('x', 'y', 'z', 'xy')'跨度>
    • 这意味着首先我必须加入表格......实际上我是在 php 中做的,所以有点混乱......让我试试......
    • 哪一部分?请详细说明您要做什么?插入程序?为某个程序插入新调查?还是别的什么?
    • 假设在程序表中 program_name 是 B.tech IT 并且 p_id 是 1。我们为 B.tech IT 填写调查表...接下来的调查已经完成了另一个程序说 B.tech EE 和 p_id 是 2...在调查表中,外键 p_id 将引用程序表的 pk...现在如果 B.tech IT 再次来填写调查表,那么外键 p_id 将调查表是指 B.tech IT 的 p_id 为 1?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2018-03-25
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多