作为练习,我正在构建我的第一个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
);
答案 0 :(得分:0)
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