Jeste li spremni početi stvarati baze podataka i tablice s Strukturiranim upitnikom? U ovom članku istražujemo postupak stvaranja tablica ručno pomoću CREATE DATABASE i CREATE TABLE naredbi. Ako ste novi u SQL-u, preporučujemo da prvo pregledate neke osnovne SQL osnove.
Poslovni zahtjevi
Prije nego što sjednemo na tipkovnici, moramo osigurati solidno razumijevanje zahtjeva korisnika. Koji je najbolji način za dobivanje ovog uvida? Razgovor s kupcem, naravno! Nakon što smo sjeli s direktorom za ljudske potencijale XYZ-a, saznali smo da su oni prodavači widgeta i prvenstveno su zainteresirani za praćenje informacija o prodajnom osoblju.
XYZ Corporation dijeli prodajnu snagu u istočnu i zapadnu regiju, od kojih je svaka podijeljena na mnoga područja koja pokrivaju pojedinačni prodavači. Odjel za ljudske resurse želi pratiti područje koje pokriva svaki zaposlenik, kao i podatke o plaći svakog pojedinog zaposlenika i nadzornu strukturu. Da bismo ispunili ove zahtjeve, napravili smo bazu podataka koja se sastoji od tri tablice, prikazane na dijagramu Entity-Relationship na ovoj stranici.
Odabir baze podataka
Odlučili smo koristiti sustav upravljanja bazom podataka (ili DBMS) koji se temelji na Strukturiranom jeziku upita (SQL). Stoga, sve naše naredbe za izradu tablica i tablica trebaju biti napisane u standardnom ANSI SQL.
Kao dodatnu korist, pomoću ANSI-usklađenog SQL-a osigurat će se da će ove naredbe raditi na bilo kojem DBMS-u koji podržava SQL standard, uključujući Oracle i Microsoft SQL Server. Ako još niste odabrali platformu za svoju bazu podataka, Opcije softverskih programa baze podataka prolaze kroz postupak odabira.
Izrada baze podataka
Naš prvi korak je stvoriti samu bazu podataka. Mnogi sustavi za upravljanje bazama podataka nude niz mogućnosti prilagodbe parametara baze podataka u ovom koraku, ali naša baza podataka omogućuje samo jednostavnu izradu baze podataka. Kao i kod svih naših naredbi, možete se obratiti dokumentaciji za svoj DBMS kako biste utvrdili jesu li napredni parametri koji podržavaju vaš specifični sustav zadovoljavaju vaše potrebe. Upotrijebimo naredbu CREATE DATABASE za postavljanje naše baze podataka:
Stvorite osoblje DATABASE
Posebno napominjemo kako je gore navedena upotreba velikih slova. Uobičajena je praksa kod SQL programera da koriste sva velika slova za SQL ključne riječi kao što su "CREATE" i "DATABASE", a upotrebljavaju sva mala slova za korisnička imena poput imena "osoblja". Ove konvencije pružaju jednostavnu čitljivost. Sada kada smo dizajnirali i stvorili našu bazu podataka, spremni smo započeti izrađivati tri tablice za pohranjivanje osobnih podataka tvrtke XYZ Corporation. Naš prvi stol sastoji se od osobnih podataka za svakog zaposlenika naše tvrtke. Moramo uključiti ime, plaću, ID i upravitelja svakog zaposlenika. Dobra je dizajnerska praksa da odvoji zadnja i prva imena u zasebna polja radi pojednostavljivanja pretraživanja i sortiranja podataka u budućnosti. Također ćemo pratiti upravitelja svakog zaposlenika umetanjem uputa na ID zaposlenika upravitelja u svakom zapisu zaposlenika. Pogledajmo najprije željenu tablicu zaposlenika. Atribut ReportsTo pohranjuje ID upravitelja za svakog zaposlenika. Iz prikaza prikazanih uzoraka možemo utvrditi da je Sue Scampi upravitelj i Tom Kendall i John Smith. Međutim, u bazi podataka nema podataka o Sueovom menadžeru, kao što pokazuje NULL zapis u njenom retku. Sada možemo koristiti SQL za stvaranje tablice u našoj bazi podataka osoblja. Prije nego što to učinimo, provjerimo jesmo li u ispravnoj bazi podataka izdavanjem naredbe USE: Osoblje USE;
Alternativno, "DATABASE osoblje"; naredba će obavljati istu funkciju. Sada možemo pogledati SQL naredbu koja se koristila za izradu tablice naših zaposlenika: CREATE TABLE djelatnici (employeeid INTEGER NOT NULL, prezime VARCHAR (25) NOT NULL, ime VARCHAR (25) NOT NULL, reportsto INTEGER NULL);
Kao i kod gore navedenog primjera, napominjemo da programska konvencija diktira da koristimo sva velika slova za SQL ključne riječi i mala slova za stupce i tablice s imenom pod imenom. Naredba gore može se činiti zbunjujućom na početku, ali zaista postoji jednostavna struktura. Evo općenitog prikaza koji bi mogao nešto ukloniti: CREATE TABLE table_name (opcije vrsta podataka attribute_name, …, opcije vrste podataka atributa_name); U prethodnom primjeru, naziv tablice je zaposlenik, a mi uključujemo četiri atributa: employeeid, prezime, ime, i reportsto. Vrsta podataka označava vrstu informacija koje želimo pohraniti u svakom polju. ID zaposlenika jednostavan je cijeli broj pa ćemo upotrijebiti INTEGER datatip za polje employeeid i polje reportsto. Imena zaposlenika bit će znakovne nizove promjenjive duljine i ne očekujemo da bilo koji zaposlenik ima ime ili prezime duže od 25 znakova. Stoga ćemo za te polja koristiti vrstu VARCHAR (25). Također možemo navesti ili NULL ili NOT NULL u polju opcija izjave CREATE. To jednostavno govori u bazi da li su dopušteni NULL (ili prazni) vrijednosti za taj atribut pri dodavanju redaka u bazu podataka. U našem primjeru, odjel za upravljanje ljudskim resursima zahtijeva pohranjivanje ID-a zaposlenika i potpunog imena za svakog zaposlenika. No, svaki zaposlenik nema upravitelja (CEO ne prijavljuje nikome!) Pa dopuštamo NULL unose u tom polju.Napominjemo da je NULL zadana vrijednost, a izostavljanje ove opcije implicitno će dopustiti NULL vrijednosti za atribut. Pogledajmo sada tablicu teritorija. S brzog pregleda ovih podataka čini se da moramo pohraniti nizove s brojevima cijele i dvije varijabilne duljine. Kao i kod našeg prethodnog primjera, ne očekujemo da ID regije potroši više od 25 znakova. Međutim, neki od naših područja imaju dulje ime pa ćemo proširiti dopuštenu dužinu tog atributa na 40 znakova. Pogledajmo odgovarajući SQL: CREATE TABLE teritorijima (territoryid INTEGER NOT NULL, teritorij Opis VARCHAR (40) NOT NULL, regionid VARCHAR (25) NE NULL);
Konačno, koristit ćemo tablicu EmployeeTerritories za pohranu odnosa između zaposlenika i teritorija. Detaljne informacije o svakom zaposleniku i teritoriju pohranjuju se u našim prethodnim dvjema tablicama. Stoga u ovoj tablici trebamo pohraniti dva brojeva za cijeli broj. Ako bismo trebali proširiti te podatke, možemo upotrijebiti JOIN u našim naredbama za odabir podataka za dobivanje informacija iz više tablica. Ova metoda pohrane podataka smanjuje redundanciju u našoj bazi podataka i osigurava optimalno korištenje prostora na našim pogonima za pohranu. Prikazat ćemo naredbu JOIN u dubini u budućem vodiču. Evo SQL koda koji će implementirati naš konačni stol: CREATE TABLE zapošljavanje (employeeid INTEGER NOT NULL, teritorij INTEGER NE NULL); Ako ste danas posebno lukavi, možda ste primijetili da smo slučajno izostavili jedan od zahtjeva za projektiranje prilikom implementacije naših tablica baze podataka. HR ravnatelj XYZ Corporation zatražio je da baza podataka prati podatke o plaći zaposlenika, a mi smo zanemarili pružiti to u tablicama baze podataka koje smo stvorili. Međutim, sve se ne gubi. Pomoću naredbe ALTER TABLE možemo dodati ovaj atribut u postojeću bazu podataka. Želimo pohraniti plaću kao cjelobrojnu vrijednost. Sintaksa je vrlo slična onoj iz naredbe CREATE TABLE, ovdje je: ALTER TABLE zaposlenici ADD plaća INTEGER NULL;
Primijetite da smo naveli da su NULL vrijednosti dopuštene za ovaj atribut. U većini slučajeva ne postoji mogućnost dodavanja stupca u postojeću tablicu. To je zbog činjenice da tablica već sadrži retke bez unosa za ovaj atribut. Stoga, DBMS automatski unosi NULL vrijednost za ispunjavanje praznine. Stvaranje našeg prvog stola
Atributi i Vrste podataka
NULL vrijednosti
Izgradnja preostalih tablica
Mehanizam SQL pruža promjenu strukture baze podataka nakon stvaranja