gpt4 book ai didi

MySQL 多表连接 + FK

转载 作者:行者123 更新时间:2023-11-30 00:21:56 26 4
gpt4 key购买 nike

作为练习,我正在构建我的第一个 SQL 数据库。我试图为数据库中的所有表创建语句。我想知道是否可以删除任何外键?

我的第二个问题是如何对使用 4 个或更多表的联接的数据库进行查询。

任何答案都将受到赞赏!

CREATE TABLE CLUB(
cl_id INT PRIMARY KEY NOT NULL,
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
dtm_oprichta TEXT NOT NULL
);


CREATE TABLE STADION(
sta_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
capaciteit INT NOT NULL,
dtm_bouw TEXT NOT NULL
);

CREATE TABLE TECHNISCHDIRECTEUR(
td_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
salaris REAL NOT NULL,
nationaliteit TEXT NOT NULL,
geslacht CHAR NOT NULL,
dtm_geboorte TEXT NOT NULL
);

CREATE TABLE FINANCIEELDIRECTEUR(
fd_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
salaris REAL NOT NULL,
nationaliteit TEXT NOT NULL,
geslacht CHAR NOT NULL,
dtm_geboorte TEXT NOT NULL
);


CREATE TABLE HOOFDTRAINER(
ht_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
td_id INT REFERENCES TECHNISCHDIRECTEUR(td_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
salaris REAL NOT NULL,
nationaliteit TEXT NOT NULL,
geslacht CHAR NOT NULL,
dtm_geboorte TEXT NOT NULL
);


CREATE TABLE ASSISTENTTRAINER(
at_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
ht_id INT REFERENCES HOOFDTRAINER(ht_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
salaris REAL NOT NULL,
nationaliteit TEXT NOT NULL,
geslacht CHAR NOT NULL,
dtm_geboorte TEXT NOT NULL
);

CREATE TABLE SPELER(
sp_id INT PRIMARY KEY NOT NULL,
cl_id INT REFERENCES CLUB(cl_id),
ht_id INT REFERENCES HOOFDTRAINER(ht_id),
naam TEXT NOT NULL,
adres VARCHAR(200) NOT NULL,
salaris REAL NOT NULL,
nationaliteit TEXT NOT NULL,
geslacht CHAR NOT NULL,
dtm_geboorte TEXT NOT NULL,
positie TEXT NOT NULL,
rugnummer INT NOT NULL
);

最佳答案

1) 你能删除外键吗?查看您的表名称:

STADION: cl_id     - Identifies a club associated to a stadium. 
TECHNISCHDIRECTEUR cl_id - Identifies a club associated to a Technical Director
FINANCIEELDIRECTEUR cl_id - Identifies a club associated to a Financial Director

如果删除任何外键,您将无法识别它们属于哪个俱乐部!所以,我想说,保留它们。

2) 这是一个连接所有四个表的示例查询。此示例显示了每个俱乐部的体育场、技术总监和财务总监(如果有)!假设每个俱乐部只有一名球场\技术总监\财务总监。如果他们有多个,您将看到俱乐部行重复(但正如我所说,这只是一个简单的示例)。

Select c.cl_id as ClubId, c.naam as Club, td.naam as TechnicalDirector, fd.naam as FinancialDirector
From Club c
left join STADION s on s.cl_id = c.cl_id
left join TECHNISCHDIRECTEUR td on td.cl_id = c.cl_id
left join FINANCIEELDIRECTEUR fd on fd.cl_id = c.cl_id

关于MySQL 多表连接 + FK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com