Vytváranie databáz a tabuliek v SQL

Ste pripravení začať vytvárať databázy a tabuľky s Štruktúrovaný Dopytovací Jazyk? V tomto článku skúmame proces ručného vytvárania tabuliek pomocou príkazov CREATE DATABASE a CREATE TABLE. Ak ste v odbore SQL nováčikom, mali by ste si nejaké prečítať Základy SQL najprv.

Obchodné požiadavky

Než si sadneme za klávesnicu, musíme sa ubezpečiť, že dobre rozumieme požiadavkám zákazníka. Aký je najlepší spôsob získania tohto prehľadu? Rozprávanie so zákazníkom, samozrejme! Po zasadnutí s riaditeľom ľudských zdrojov spoločnosti XYZ sme sa dozvedeli, že ide o spoločnosť zaoberajúcu sa predajom widgetov a primárne ich zaujíma sledovanie informácií o ich predajnom personáli.

Spoločnosť XYZ Corporation rozdeľuje svoju predajnú silu na východné a západné oblasti, pričom každý z nich je rozdelený na mnoho území pokrytých jednotlivými obchodnými zástupcami. Personálne oddelenie by chcelo sledovať územie pokryté každým zamestnancom, ako aj informácie o plate a štruktúre dohľadu každého zamestnanca. Na splnenie týchto požiadaviek sme navrhli databázu pozostávajúcu z troch tabuliek zobrazených v

instagram viewer
Schéma entita-vzťah na tejto stránke.

Výber databázovej platformy

Rozhodli sme sa použiť systém správy databáz (alebo DBMS), ktorý je založený na jazyku Structured Query Language (SQL). Preto by všetky naše príkazy na vytváranie databáz a tabuliek mali byť písané so zreteľom na štandardný ANSI SQL.

Ďalšou výhodou je použitie SQL kompatibilného s ANSI, ktoré zabezpečí, že tieto príkazy budú fungovať na všetkých systémoch DBMS, ktoré podporujú štandard SQL, vrátane Oracle a Microsoft SQL Server. Ak ste ešte nevybrali platformu pre svoju databázu, výberovým procesom vás prevedie Database Software Options.

Vytvorenie databázy

Naším prvým krokom je vytvorenie samotnej databázy. Mnoho systémov na správu databáz ponúka v tomto kroku množstvo možností na prispôsobenie parametrov databázy, ale naša databáza umožňuje iba jednoduché vytvorenie databázy. Rovnako ako všetky naše príkazy, možno budete chcieť nahliadnuť do dokumentácie k systému DBMS a zistiť, či niektoré pokročilé parametre podporované vaším konkrétnym systémom vyhovujú vašim potrebám. Použime príkaz CREATE DATABASE na nastavenie našej databázy:

VYTVORTE personál DATABÁZY

Špeciálne si všimnite použitie veľkých písmen použitých v príklade vyššie. Medzi programátormi SQL je bežnou praxou používať všetky veľké písmená pre kľúčové slová SQL, ako napríklad „CREATE“ a „DATABÁZA“ pri použití všetkých malých písmen pre používateľom definované mená, ako je napríklad „personálna“ databáza názov. Tieto konvencie umožňujú ľahkú čitateľnosť.

Teraz, keď sme navrhli a vytvorili našu databázu, sme pripravení začať vytvárať tri tabuľky, ktoré sa používajú na ukladanie osobných údajov spoločnosti XYZ Corporation.

Vytváranie našej prvej tabuľky

Naša prvá tabuľka obsahuje osobné údaje za každého zamestnanca našej spoločnosti. Musíme uviesť meno, plat, identifikačné číslo a manažéra každého zamestnanca. Osvedčeným postupom pri návrhu je oddeliť priezvisko a meno do samostatných polí, aby sa v budúcnosti zjednodušilo vyhľadávanie a triedenie údajov. Ďalej budeme sledovať manažéra každého zamestnanca tak, že do každého záznamu zamestnanca vložíme odkaz na jeho ID. Najprv sa pozrime na požadovanú tabuľku zamestnancov.

Atribút ReportsTo uchováva ID manažéra pre každého zamestnanca. Zo zobrazených vzorových záznamov môžeme určiť, že Sue Scampi je manažérkou spoločnosti Tom Kendall aj John Smith. V databáze však nie sú žiadne informácie o správcovi Sue, ako to naznačuje položka NULL v jej riadku.

Teraz môžeme pomocou SQL vytvoriť tabuľku v našej personálnej databáze. Predtým, ako tak urobíme, sa zadaním príkazu USE ubezpečte, že sme v správnej databáze:

Personál USE;

Prípadne „personál DATABÁZY;“ príkaz by vykonával rovnakú funkciu. Teraz sa môžeme pozrieť na príkaz SQL, ktorý sa použil na vytvorenie tabuľky našich zamestnancov:

CREATE TABLE zamestnancov
(zamestnanec INTEGER NIE JE NULL,
priezvisko VARCHAR (25) NIE NULL,
meno VARCHAR (25) NIE NULL,
správy INTEGER NULL);

Rovnako ako v predchádzajúcom príklade si všimnite, že programovacia konvencia diktuje, že pre kľúčové slová SQL používame všetky veľké písmená a pre stĺpce a tabuľky pomenované používateľom malé písmená. Vyššie uvedený príkaz sa na prvý pohľad môže zdať mätúci, ale v skutočnosti je za ním jednoduchá štruktúra. Tu je zovšeobecnený pohľad, ktorý by mohol veci trochu objasniť:

CREATE TABLE table_name
(možnosti údajového typu atribútu_názov,
...,
možnosti atribútu_název_datového typu);

Atribúty a dátové typy

V predchádzajúcom príklade sú názvy tabuľky zamestnanci a zahrňujeme štyri atribúty: id zamestnanca, priezvisko, meno a zostavy. Dátový typ označuje typ informácií, ktoré chceme uložiť do každého poľa. ID zamestnanca je jednoduché celé číslo, takže budeme používať dátový typ INTEGER pre pole id zamestnanca aj pole reportsto. Mená zamestnancov budú reťazce znakov s rôznou dĺžkou a neočakávame, že by ktorýkoľvek zamestnanec mal meno alebo priezvisko dlhšie ako 25 znakov. Preto pre tieto polia použijeme typ VARCHAR (25).

NULL hodnoty

Môžeme tiež určiť NULL alebo NIE NULL v poli možností príkazu CREATE. Toto jednoducho povie databáze, či sú pre tento atribút pri pridávaní riadkov do databázy povolené hodnoty NULL (alebo prázdne). V našom príklade personálne oddelenie vyžaduje, aby bolo pre každého zamestnanca uložené ID zamestnanca a celé meno. Nie každý zamestnanec má však manažéra (generálny riaditeľ sa nikomu nehlási!), Takže v tomto poli povoľujeme NULL záznamy. Všimnite si, že NULL je predvolená hodnota a vynechanie tejto možnosti implicitne povolí hodnoty NULL pre atribút.

Budovanie zostávajúcich tabuliek

Teraz sa pozrime na tabuľku území. Z rýchleho pohľadu na tieto údaje sa zdá, že musíme uložiť celé číslo a dva reťazce s premennou dĺžkou. Rovnako ako v predchádzajúcom príklade neočakávame, že by ID regiónu spotrebovalo viac ako 25 znakov. Niektoré z našich území však majú dlhšie názvy, takže povolenú dĺžku tohto atribútu rozšírime na 40 znakov.

Pozrime sa na zodpovedajúci SQL:

VYTVORIŤ TABUĽKU teritórií
(Teritorium INTEGER NIE JE NULL,
územie Popis VARCHAR (40) NOT NULL,
regionid VARCHAR (25) NIE NULL);

Na záver použijeme tabuľku EmployeeTerritories na uloženie vzťahov medzi zamestnancami a územiami. Podrobné informácie o každom zamestnancovi a teritóriu sú uložené v našich predchádzajúcich dvoch tabuľkách. Preto do tejto tabuľky musíme ukladať iba dve celočíselné identifikačné čísla. Ak potrebujeme rozšíriť tieto informácie, môžeme použiť JOIN v našich príkazoch na výber údajov a získať informácie z viacerých tabuliek.

Tento spôsob ukladania údajov znižuje nadbytočnosť v našej databáze a zaisťuje optimálne využitie priestoru na našich úložných jednotkách. Príkazu JOIN sa budeme podrobne venovať v budúcom tutoriáli. Tu je kód SQL na implementáciu našej finálnej tabuľky:

VYTVORIŤ TABUĽKU zamestnávateľské oblasti
(zamestnanec INTEGER NIE JE NULL,
teritorium INTEGER NIE JE NULL);

Mechanizmus SQL umožňuje zmeniť štruktúru databázy po vytvorení

Ak ste dnes obzvlášť múdri, mohli ste si všimnúť, že sme pri implementácii našich databázových tabuliek „náhodou“ vynechali jednu z požiadaviek na dizajn. Riaditeľ HR spoločnosti XYZ Corporation požiadal, aby databáza sledovala informácie o plate zamestnancov, a zanedbali sme uvedenie týchto údajov v databázových tabuľkách, ktoré sme vytvorili.

Nie je však všetko stratené. Na pridanie tohto atribútu do našej existujúcej databázy môžeme použiť príkaz ALTER TABLE. Chceme uložiť plat ako celočíselnú hodnotu. Syntax je dosť podobná syntaxe príkazu CREATE TABLE, tu je:

ALTER TABLE zamestnanci
PRIDAŤ plat INTEGER NULL;

Všimnite si, že sme zadali, že pre tento atribút sú povolené hodnoty NULL. Vo väčšine prípadov nie je pri pridávaní stĺpca k existujúcej tabuľke k dispozícii žiadna možnosť. Je to tak kvôli skutočnosti, že tabuľka už obsahuje riadky bez záznamu pre tento atribút. Preto systém DBMS automaticky vloží hodnotu NULL, aby vyplnil prázdnotu.