एक subquery - एसक्यूएल, डेटाबेस, subquery बनाने के लिए कैसे पता नहीं लगा सकता है

        CREATE TABLE TBLTeams
(
teamnm        varchar(30) NOT NULL,
teamid          varchar(10),
rondenm         varchar(10)
primary key(teamnm)
)

CREATE TABLE TBLWedstrijd
(
thuisteamnm        varchar(30) NOT NULL,
uitteamnm            varchar(30) NOT NULL,
wedstrijdid            varchar(10)
primary key(wedstrijdid)
)

alter table TBLWedstrijd add foreign key (thuisteamnm) references TBLTeams(teamnm)
alter table TBLWedstrijd add foreign key (uitteamnm) references TBLTeams(teamnm)

CREATE TABLE TBLUitslag
(
thuisteamnm        varchar(30) NOT NULL,
uitteamnm            varchar(30) NOT NULL,
wedstrijdid            varchar(10) NOT NULL,
uitteampunt            int,
thuisteampunt        int
primary key(thuisteamnm)
)

alter table TBLUitslag add foreign key (wedstrijdid) references TBLWedstrijd(wedstrijdid)

अगर मैं TBLTeams में टीमलाइन अपडेट करता हूं तो मैं TBLWedstrijd uitteamnm में संदर्भ कैसे अपडेट कर सकता हूं। मुझे पता है कि यह एक उपश्रेणी है लेकिन मैं वास्तव में नहीं जानता कि कैसे।

उत्तर:

जवाब के लिए 0 № 1

आप इसके बारे में थोड़ा गलत हो रहे हैं। यदि आप टीम का नाम बदलने जा रहे हैं, तो आपको इसे एक कुंजी के रूप में उपयोग नहीं करना चाहिए (क्योंकि यह सभी संदर्भों को तोड़ देगा)।

आप अपने नाम का उपयोग करने के बजाय TBLWedstrijd से अपनी आईडी का संदर्भ लेना चाहते हैं।

तो आपके कथन बन जाएंगे:

CREATE TABLE TBLWedstrijd
(
wedstrijdid        varchar(10),
thuisteamid        varchar(10) NOT NULL,
uitteamid          varchar(10) NOT NULL,
primary key(wedstrijdid)
)

alter table TBLWedstrijd add foreign key (thuisteamid) references TBLTeams(teamid)
alter table TBLWedstrijd add foreign key (uitteamid) references TBLTeams(teamid)

वही आपकी तालिका TBLUitslag के लिए मान्य है, आपकेवल TBLWedstrijd का संदर्भ लेना चाहिए, क्योंकि वह पहले से ही यह जानकारी रखता है कि कौन सी टीमें खेल रही हैं। उल्लेख नहीं करने के लिए, स्कोर किसी भी खेल का बहुत अधिक हिस्सा है, इसलिए यह 2 तालिकाओं में अलग करने के लिए बहुत मायने नहीं रखता है। इसलिए यह बन जाता है:

CREATE TABLE TBLWedstrijd
(
wedstrijdid        varchar(10),
thuisteamid        varchar(10) NOT NULL,
uitteamid          varchar(10) NOT NULL,
uitteampunt        int,
thuisteampunt      int
primary key(wedstrijdid)
)

This is called "table normalisation" if you wanted to google some stuff for more info about it.


संबंधित सवाल
सबसे लोकप्रिय