MCSA: SQL 2016 Database Development (početni)
Svaka kompanija, organizacija bilo privatna ili državna ima potrebe da prikuplja, čuva i radi sa podacima koji su im od ogromnog značaja i bez kojih ne bi mogli obavljati svoj posao. Zamislite matične knjige rođenih, katastar nepokretnosti, evidenciju proizvodnje, nabavke i prodaje, podatke o pacijentima i obavljenim pregledima bolnice ili privatne ordinacije i ogromnu količinu podataka kojima raspolažu.
Na tržištu postoji više proizvođača sistema koji se bave podacima – Microsoft, IBM, Oracle, Informix, MySQL i mnogi drugi. Svakako, na vrhu liste je Microsoft sa svojim Microsoft SQL Server sistemom, čija je primarna uloga upravljanje podacima, ali koji nudi i mnogo više od toga.
Cena (€)
Akcija (€)
Trajanje č/d
Termin
Dani
Vreme
480
400
48 / 12
18/11/2024 - 03/12/2024
pon,uto,sre,cet,pet
17:30-21:00
Informacije o kursu
Od početka digitalne ere kompjuteri se koriste za upravo ovakve namene – čuvanje, obradu podataka i različite kalkulacije nad njima. Organizacija u kojoj radite zasigurno ima neki kompjuterski sistem koji uključuje i čuvanje podataka. Zahvaljući tim podacima dolazite do potrebnih informacija kao što su:
- kolika je bila proizvodnja i prodaja prošle godine po artiklima koje proizvodite
- koliko prometa je ostvareno po prodajnim mestima
- koje usluge ste pružali svojim klijentima i po kojoj ceni
- ko su vaši najznačajniji klijenti, saradnici, dobavljači
- koji su vam najbolji leadovi za potencijalnu prodaju
Da bi pristupili podacima moramo sistemu na neki način objasniti šta želimo. Srećom, još 1986. godine je usvojen standardni jezik pomoću koga “razgovaramo” sa bazama podataka. Jezik se skraćeno piše SQL – Structured Query Language i do danas je doživeo puno revizija i proširenja u skladu sa razvojem kompjutera i softvera. Svi sistemi za rad sa bazama podataka su saglasni sa ovim standardom, tako da se jednom naučen SQL može primeniti svuda.
SQL omogućava operacije dodavanja, izmene, brisanja podataka i naravno pregleda podataka po potrebi za veoma složene kriterijume. Na primer, želite podatke o prodaji u prvom kvartalu ove godine za određeni region i određenu kategoriju proizvoda/usluga i to želite da uporedite sa prvim kvartalom predhodne godine. Nikakav problem, samo odgovarajući upit pošaljete serveru i odmah dobijete rezultate. Dobijene rezultate možete potom preneti u neki dokument ili na primer u Excel gde ćete ih dodatno obraditi, napraviti grafikone i izveštaje.
MCSA SQL Database se sastoji iz dva kursa koja su namenjena početnicima koji žele da steknu znanja u vezi rada sa podacima na Microsoft SQL server bazi, programiraju uskladištene procedure, funkcije i druge programske elemente:
Kurs 20761A – Querying Data with Transact-SQL
Kurs 20762B – Developing SQL Databases
Pored praktičnih znanja koja ćete steći, imate i mogućnost sertifikacije i dobijanja međunarodno priznatih Microsoft diploma. Oba kursa su zvanična priprema za izlazak na ispite. Sve Microsoft ispite možete prijaviti i polagati u ovlašćenom CET testing centru.
Za položena oba ispita 70-761 Querying Data with Transact -SQL i 70-762 Developing SQL Databases stičete zvanje MCSA SQL Database Development.
Kreiranje i zadavanje SQL upita serveru nije komplikovano. Ne zahteva nikakvo poznavanje matematike, programiranja ili IT tehnologije. Uložen trud u učenje se brzo vraća, rezultati su odmah vidljivi i to je odlična motivacija za napredak.
Ekonomisti, marketing, statistika, finansije, planiranje i ostali zaposleni u strukama koje nemaju veze sa IT strukom, mogu veoma brzo naučiti kako da od podataka koje već imaju u organizaciji dobiju ono što im je potrebno. Na taj način ne zavisite od toga da li sistem ima ili nema vama važan izveštaj – napravićete ga sami.
Excel je verovatno najkorišćeniji alat za analizu i obradu podataka. Ako znate Excel, brzo ćete razumeti i SQL. I on ima redove, kolone, filtere, sortiranja,… Veoma je blizak osnovnom engleskom govornom jeziku, pa ga zbog toga negde zovu i SEQL, skraćeno od Structured English Query Language.
Izuzetno su dobra iskustva sa polaznicima SQL kursa koji imaju samo osnovna IT znanja. Oni odlično znaju šta im treba da bi kvalitetno obavljali svoj posao i SQL tretiraju kao alat koji im to omogućava. Preuzimaju podatke sa servera u svojoj organizaciji i prebacuju ih u program koji odlično znaju da koriste. Na kursu se često razmenjuju pitanja i odgovori u tom smislu i tako stiču dragocene informacije.
Naučićete da kreirate različite upite ka Microsoft SQL Server bazi podataka koji su potrebni u svakodnevnom radu, za kreiranje različitih izveštaja i analizu podataka u svim organizacijama.
Specijalista za SQL baze je neophodan deo u sastavu projektnog tima koji se bavi izradom bilo kakve poslovne aplikacije, web sajta ili mobline aplikacije koja pristupa bazi podataka.
Svaka druga organizacija koja se na bavi direktno IT delatnošću, a za svoje potrebe ima poslovni sistem baziran na SQL Serveru, ima potrebu za ovakvim profilom.
Microsoft SQL server je dominantna baza podataka u poslovnom okruženju domaćih i stranih firmi u našoj zemlji. Ovde spadaju banke, osiguravajuća društva, trgovinski lanci, javna preduzeća, ambasade.
Takođe, ovaj sertifikat profiliše IT stručnjake u pravcu programiranja na SQL server platformi. Sadrži skup znanja neophodan za izradu poslovnih aplikacija u takozvanom back-end nivou. Ovaj nivo predstavlja osnovu za prilaz podacima i rad sa njima. Na beck-end nivo se nadovezuju različiti tipovi aplikacija (desktop, web, mobile) koje preko odgovarajućeg interfejsa dalje komuniciraju sa korisnikom.
Učenjem SQLa proširujete znanje i možete uraditi svoj posao brže i kvalitetnije, što vam potencijalno može doneti bolju poziciju u kompaniji i na tržištu rada.
mr Miloš Milosavljević
- CET predavac od 1997.
- Sertifikovani Microsoft trener od 1999 godine
- Microsoft Certified IT Professional
- Microsoft Certified Solutions Associate (Microsoft SQL Server)
- Microsoft Certified Technology Associate
- Microsoft Certified Technology Specialist
- Microsoft Certified Database Administrator
- Učešće u organizaciji i predavanja na konferenciji „SINERGIJA“ ( http://www.mssinergija.net ) od osnivanja 2001. godine na dalje.
dr Snežana Popović
- CET predavac od 1999
- Sertifikovani Microsoft trener od 2002.
- Microsoft Certified Application Developer
- MCSD Microsoft Certified Solution Developer – Microsoft .NET
- MCTS Microsoft Certified Technology Specialist
- MCPD Microsoft Certified Professional Developer
- Docent na Računarskom fakultetu
M.Sci.Bratislav Dimitrov
- CET predavac od 2011
- Development Lead, Scrum master,
- MS Visual Studio 2003/2005/2008/2010/2012/2015/2017,
- MS SQL Server 2000/2005/2008 (R2), 2012/2016,
- MS SQL Server Integration Services (SSIS),
- MS SQL Server Reporting Services (SSRS)
Prijava
Hover Box Element
PRIJAVI SEČitalište
Osnove SQL-a
Upoznajte DDL, DML i JOINs
Struktuirani upitni jezik je jedan od osnovnih sastavnih blokova savremene arhitekture baza podataka. Definiše metode koje se koriste da bi se kreirale relacione baze podataka i da bi se sa njima radilo na svim glavnim platformama. Na prvi pogled, jezik izgleda složeno i skoro zastrašujuće, ali uopšte ga nije teško savladati.
O SQL-u
Ispravan izgovor naziva jezika je stalno sporno pitanje u zajednici stručnjaka koji se bave bazama podataka. Američki nacionalni institut za standarde je ustanovio pravilan izgovor imena kao „eskjuel“, međutim, mnogi stručnjaci koji se bave bazama podataka navikli su da izgovaraju „sikvel“, tako da vama prepuštamo izbor.
Postoji nekoliko vrsta SQL-a. Oraklova baza podataka koristi svoju verziju PL/SQL, a SQL server kompanije „Majkrosoft“ koristi Transact-SQL. Sve varijacije se zasnivaju na industrijskom standardu ANSI SQL. Ovaj uvod koristi SQL naredbe usaglašene sa ANSI standardom koji može da se koristi u bilo kom savremenom sistemu baza podataka.
DDL i DML
Naredbe u SQL-u mogu da se podele na dva glavna podjezika. Jezik za definisanje podataka (DDL) sadrži naredbe koje se koriste da bi se kreirale i uništile baze podataka i njihovi objekti. Pošto se uz pomoć tog jezika definiše struktura baze podataka, njeni administratori i korisnici mogu da koriste jezik za manipulisanje podacima (DML) da bi umetali, pronalazili i menjali podatke koji se u njoj nalaze.
Naredbe u jeziku za definisanje podataka
Jezik za definisanje podataka se koristi da bi se kreirale i uništile baze podataka i njihovi objekti. Te naredbe prvenstveno koriste administratori baza podataka tokom faza uspostavljanja ili uklanjanja baza podataka. Predstavićemo vam strukturu i upotrebu četiri osnovne naredbe u jeziku za definisanje podataka.
CREATE. Instaliranje sistema za upravljanje bazama podataka u računar omogućava vam da kreirate i upravljate mnogim nezavisnim bazama podataka. Na primer, želite da kreirate bazu podataka kontakata klijenata za odeljenje prodaje i bazu podataka zaposlenih za kadrovsku službu. Naredba CREATE se koristi da bi se uspostavila bilo koja od navedenih baza podataka na vašoj platformi. Na primer, naredba:
CREATE DATABASE employees
kreira praznu bazu podataka koja se zove „employees“ (zaposleni) na vašem sistemu za upravljanje bazama podataka. Pošto ste kreirali bazu podataka, sledeći korak bi bio kreiranje tabela koje će sadržati podatke. Varijanta naredbe CREATE može se koristi u tom postupku. Naredba:
CREATE TABLE personal_info (first_name char(20) not null, last_name char(20) not null, employee_id int not null)
kreira tabelu pod nazivom „personal_info“ (lični_podaci) u postojećoj bazi podataka. U ovom primeru, tabela sadrži tri atributa: ime, prezime i lični broj zaposlenog (first_name, last_name, and employee_id) zajedno sa još nekim detaljima.
USE. Naredba USE vam omogućava da odredite bazu podataka u kojoj želite da radite u okviru vašeg sistema za upravljanje bazama podataka. Na primer, ako trenutno radite u bazi podataka prodaje i želite da izdate neke naredbe koje će uticati na bazu podataka zaposlenih, pre njih morate iskoristiti sledeću naredbu u SQL-u:
USE employees
Izuzetno je važno da uvek budete svesni u kojoj bazi podataka radite pre nego što izdate naredbe u SQL-u kojima manipulišete podacima.
ALTER. Kad ste kreirali tabelu u okviru baze podataka, desiće se da ćete želeti da izmenite njenu definiciju. Naredba ALTER vam omogućava da izvršite promene u strukturi tabele, a da pri tom ne morate da je obrišete ili ponovo kreirate. Pogledajte sledeću naredbu:
ALTER TABLE personal_info ADD salary money null
U ovom primeru dodali smo novi atribut tabeli personal_info, a to je zarada zaposlenog (employee’s salary). Argument „money“ (novac) određuje da je zarada zaposlenog izražena u formatu dolara i centi. Konačno, ključna reč „null“ (nula) govori bazi podataka da je sasvim u redu ako to polje ne sadrži nikakvu vrednost za bilo kog zaposlenog.
DROP. Poslednja naredba u jeziku za definisanje podataka, DROP, omogućava vam da uklonite celokupne objekte baze podataka iz sistema za upravljanje bazama podataka. Na primer, ako želite da trajno uklonite tabelu personal_info koju ste kreirali, koristite sledeću naredbu:
DROP TABLE personal_info
Slično tome, naredbu koju ćemo navesti koristili bi da uklonite celokupnu bazu podataka zaposlenih (employee):
DROP DATABASE employees
Ovu naredbu bi valjalo pažljivo koristiti jer DROP uklanja celu strukturu podataka iz vaše baze podataka. Ako želite da uklonite pojedinačne zapise, koristite naredbu DELETE u jeziku za manipulisanje podacima.
Naredbe u jeziku za manipulisanje podacima
Jezik za manipulisanje podacima (DML) koristi se da bi se pronalazile, umetale i menjale informacije u bazi podataka. Te naredbe koriste svi korisnici baza podataka tokom rutinskih postupaka u bazi podataka.
INSERT. Naredba INSERT u SQL-u se koristi da bi se dodali zapisi već postojećoj tabeli. Vratimo se primeru personal_info iz prethodnog odeljka i zamislite da naša kadrovska služba treba da doda novog zaposlenog bazi podataka. Za taj postupak možete koristi naredbu sličnu ovoj:
INSERT INTO personal_info values(‘bart’,’simpson’,12345,$45000)
Obratite pažnju na to da su određene četiri vrednosti za ovaj unos. One odgovaraju atributima tabele redosledom kojim su definisani: ime, prezime, lični broj zaposlenog i plata (first_name, last_name, employee_id and salary).
SELECT. Naredba SELECT je najčešće korišćena naredba u SQL-u. Ona omogućava korisnicima baze podataka da pronađu određenu informaciju koju žele iz operativne baze podataka. Pogledajte nekoliko primera u kojima ćemo ponovo koristiti tabelu personal_info iz baze podataka zaposlenih.
Naredba koja je dole prikazana pronalazi sve informacije koje su sadržane u tabeli personal_info. Obratite pažnju na to da se zvezdica u SQL-u koristi kao džoker karta. Naredba doslovno znači „Odaberi sve iz tabele personal_info.“
SELECT *
FROM personal_info
S druge strane, korisnici bi možda želeli da ograniče atribute koji se pretražuju iz baze podataka. Na primer, kadrovska služba traži popis prezimena svih zaposlenih u kompaniji. Sledeća naredna u SQL-u prikazaće samo tu informaciju:
SELECT last_name
FROM personal_info
Klauzula WHERE može se koristiti da bi se ograničili zapisi koji se traže samo na one koji zadovoljavaju određene uslove. Direktor bi možda želeo da pregleda dosijee svih zaposlenih koji imaju visoke plate. Sledeća naredba prikazuje sve podatke koji se nalaze u tabeli personal_info za zapise koji imaju platu veću od 50.000 dolara:
SELECT *
FROM personal_info
WHERE salary > $50000
UPDATE. Naredba UPDATE može se koristiti da bi se izmenile informacije koje se nalaze u tabeli, kako pojedinačno, tako i grupno. Pretpostavimo da je kompanija svim zaposlenima povećala godišnju platu za 3 procenta zbog povećanja troškova života. Sledeća naredba u SQL-u se može koristiti da bi se to brzo primenilo na sve zaposlene koji se nalaze u bazi podataka:
UPDATE personal_info
SET salary = salary * 1.03
Kad novi zaposleni Bart Simpson pokaže da je izuzetno vredan i uzoran radnik, uprava želi da ga nagradi za sva njegova dostignuća tako što mu daje povišicu od 5.000 dolara. Klauzula WHERE bi mogla da se koristi da bi izdvojila Barta koji treba da dobije povišicu:
UPDATE personal_info
SET salary = salary + $5000
WHERE employee_id = 12345
DELETE. Hajde konačno da objasnimo i naredbu DELETE. Videćete da je sintaksa ove naredbe slična sintaksama ostalih naredbi u jeziku za manipulisanje podacima (DML). Nažalost, najnoviji korporativni izveštaj o ostvarenoj zaradi nije ispunio očekivanja i naš siroti Bart je dobio otkaz. Naredba DELETE zajedno sa klauzulom WHERE može se koristiti da se njegov zapis izbriše iz tabele personal_info:
DELETE FROM personal_info
WHERE employee_id = 12345
JOINs
Kad smo savladali osnove SQL-a, vreme je da se upoznamo sa najmoćnijim konceptima koje taj jezik može da ponudi – sa naredbom JOIN. Ona vam omogućava da kombinujete podatke iz većeg broja tabela da biste efikasno obradili velike količine podataka. U tim naredbama leži prava moć baza podataka.
Da bismo istražili upotrebu osnovne operacije JOIN u kombinovanju podataka iz dve tabele, nastavićemo sa primerom koristeći tabelu PERSONAL_INFO i dodaćemo još jednu tabelu u celom tom procesu. Pretpostavimo da imamo tabelu koja se zove DISCIPLINARY_ACTION koja je kreirana pomoću sledeće naredbe:
CREATE TABLE disciplinary_action (action_id int not null, employee_id int not null, comments char(500))
Ta tabela sadrži rezultate disciplinskih mera (disciplinary actions) koje su sprovedene nad zaposlenima u kompaniji. Primetićete da ne sadrži nikakve druge podatke o zaposlenima osim njihovog ličnog broja. Lako je zamisliti mnogobrojne situacije u kojima biste mogli da kombinujete informacije iz tabela DISCIPLINARY_ACTION i PERSONAL_INFO.
Pretpostavimo da ste dobili zadatak da napravite izveštaj u kome ćete popisati sve disciplinske mere sprovedene nad svim zaposlenima koji imaju platu veću od 40.000 dolara. Upotreba operacije JOIN, u tom slučaju, je jasna. Možemo prikazati te informacije pomoću sledeće naredbe:
SELECT personal_info.first_name, personal_info.last_name, disciplinary_action.comments
FROM personal_info, disciplinary_action
WHERE personal_info.employee_id = disciplinary_action.employee_id
AND personal_info.salary > 40000
Napisani kod određuje dve tabele koje želimo da spojimo u klauzuli FROM i zatim uključuje naredbu u klauzuli WHERE da bi ograničio rezultate samo na zapise koji imaju odgovarajuće lične brojeve zaposlenih i odgovaraju našem kriterijumu koji kaže da plata mora biti veća od 40.000 dolara.
Prikazivanje podataka iz više tabela pomoću izraza INNER JOIN u SQL-u
Izraz INNER JOIN prikuplja informacije koje se pojavljuju u dve ili više baza podataka
Izrazi INNER JOIN su daleko najčešće korišćena vrsta izraza JOIN u SQL-u. Oni prikupljaju informacije koje se nalaze u dve ili više tabela baza podataka. Uslov spajanja (engl. join) određuje koji će se zapisi sparivati i određen je u naredbi WHERE. Na primer, ako vam je potreban spisak vozača uparenih sa vozilima kojima upravljaju, a da se, pri tom, vozači i vozila nalaze u istom gradu, sledeći upit u SQL-u će vam obaviti taj zadatak:
SELECT lastname, firstname, tag
FROM drivers, vehicles
WHERE drivers.location = vehicles.location
Rezultati koje ćete dobiti izgledaju ovako:
lastname firstname tag
———– ———— —-
Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990MT
Primetićete da smo dobili baš onakav rezultat kakav smo tražili. Moguće je stvoriti još precizniji upit određujući dodatne kriterijume u naredbi WHERE. Pretpostavimo da je prvobitni upit spojio vozače sa vozilima koja ne smeju da voze (vozače kamiona sa automobilima i obrnuto). Možete koristiti sledeći upit da biste rešili taj problem:
SELECT lastname, firstname, tag, vehicles.class
FROM drivers, vehicles
WHERE drivers.location = vehicles.location
AND drivers.class = vehicles.class
Ovaj primer precizno određuje izvornu tabelu za atribut klase u naredbi SELECT jer je klasa dvoznačna – pojavljuje se u obema tabelama. Kod obično određuje koju kolonu tabele treba obuhvatiti rezultatom upita. U ovom slučaju, ne pravi se razlika jer su kolone identične i povezane su korišćenjem spajanja po jednakosti (EQUIJOIN). Međutim, ako kolone sadrže različite podatke, ova razlika će biti od presudnog značaja. Prikazaćemo vam rezultate ovog upita:
lastname firstname tag class
———- ———— —- ——
Baker Roland H122JM Car
Smythe Michael D824HA Truck
Jacobs Abraham J291QR Car
U redovima koji nedostaju spojen je Michael Smythe sa automobilom i Abraham Jacobs sa kamionom, vozilima kojima ne smeju da upravljaju.
Izraze INNER JOIN možete koristiti da bi kombinovali podatke iz tri ili više tabela.
Prikupljanje podataka pomoću upita u SQL-u: Upoznavanje sa naredbom SELECT
Struktuirani upitni jezik nudi korisnicima baza podataka moćan i prilagodljiv mehanizam prikupljanja podataka – naredbu SELECT. U ovom odeljku, upoznaćemo se sa opštom formom naredbe SELECT i zajedno ćemo napraviti nekoliko oglednih upita u bazi podataka. Ako je ovo prvi vaš pohod u svet struktuiranog upitnog jezika, možda bi bilo dobro da obnovite osnove SQL-a pre nego što nastavimo. Ako želite da kreirate bazu podataka od samog početka, najbolje bi bilo da naučite kako da kreirate baze podataka i tabele u SQL-u.
Pošto ste utvrdili osnove, hajde da počnemo sa istraživanjem naredbe SELECT. Kao i u prethodnim lekcijama o SQL-u, i ovde ćemo koristiti naredbe koje su u skladu standardom ANSI SQL. Možda biste mogli ponovo da pregledate dokumentaciju vašeg sistema za upravljanje bazama podataka da biste utvrdili da li podržava napredne opcije koje mogu da povećaju efikasnost i delotvornost vašeg koda u SQL-u.
Opšta forma naredbe SELECT
Opšta forma naredbe SELECT izgleda ovako:
SELECT select_list
FROM source
WHERE condition(s)
GROUP BY expression
HAVING condition
ORDER BY expression
Prvi red naredbe upućuje SQL procesor da je ta naredba SELECT i da želimo da prikažemo informacije iz baze podataka. Deo select_list omogućava nam da odredimo vrstu informacije koju želimo da prikažemo. Naredba FROM u drugom redu određuje specifičnu tabelu ili tabele u bazi podataka, a naredba WHERE pruža nam mogućnost da ograničimo rezultate na one zapise koji zadovoljavaju utvrđeni uslov ili uslove – condition(s).
Poslednje tri naredbe predstavljaju napredne odlike koje se nalaze van domena ovog odeljka – istražićemo ih u sledećim člancima o SQL-u.
Najlakše je savladati SQL proučavajući primere. U tom smislu, trebalo bi da počnemo sa pregledanjem nekih upita u bazama podataka. U ovom odeljku ćemo koristiti tabelu zaposlenih koja se nalazi u kadrovskoj službi zamišljene XZY komapanije da bismo ilustrovali sve naše upite.
Prikazaćemo celu tabelu:
EmployeeID | LastName | FirstName | Salary | ReportsTo |
1 | Smith | John | 32000 | 2 |
2 | Scampi | Sue | 45000 | NULL |
3 | Kendall | Tom | 29500 | 2 |
4 | Jones | Abraham | 35000 | 2 |
5 | Allen | Bill | 17250 | 4 |
6 | Reynolds | Allison | 19500 | 4 |
7 | Johnson | Katie | 21000 | 3 |
Prikazivanje podataka iz cele tabele
Direktor kadrovske službe u XYZ kompaniji prima mesečni izveštaj o platama zaposlenih i sve potrebne informacije za svakog zaposlenog u kompaniji. Generisanje takvog izveštaja je primer najjednostavnije forme naredbe SELECT. Ona jednostavno prikazuje sve informacije koje su sadržane u tabeli u bazi podataka – u svakom redu i svakoj koloni. Napisaćemo upit koji dovodi do tog rezultata:
SELECT *
FROM employees
Prilično jednostavno, zar ne? Zvezdica (*) koja se pojavljuje u select_list je džoker koji se koristi da obavesti bazu podataka da želimo da prikažemo podatke iz svih kolona u tabeli zaposlenih identifikovanih u naredbi FROM. Pošto smo želeli da prikažemo sve podatke iz baze informacija, nije bilo potrebno da koristimo naredbu WHERE da bismo ograničili redove izabrane iz tabele. Ovako izgledaju rezultati našeg upita:
EmployeeID | LastName | FirstName | Salary | ReportsTo |
———- | ——– | ——— | —— | ——— |
1 | Smith | John | 32000 | 2 |
2 | Scampi | Sue | 45000 | NULL |
3 | Kendall | Tom | 29500 | 2 |
4 | Jones | Abraham | 35000 | 2 |
5 | Allen | Bill | 17250 | 4 |
6 | Reynolds | Allison | 19500 | 4 |
7 | Johnson | Katie | 21000 | 3 |
Uvod u relacije u bazama podataka
Oni koji tek počnu da se bave bazama podataka veoma često ne mogu odmah da uoče razliku između baza podataka i tabelarnih proračuna. Uspevaju da vide tabele ispunjene podacima i shvataju da im baze podataka omogućavaju da organizuju i izvlače podatke na drugačije načine, ali ne uspevaju da prepoznaju značaj relacije između podataka zbog čega se tehnologija relacionih baza podataka tako zove.
Relacija vam omogućavaju da opišete veze između različitih tabela baza podataka na izuzetno moćan način. Te relacije mogu da se iskoriste za obavljanje naprednih međutabelarnih upita, koji su poznati kao JOINS, odnosno skup rezultata koji je dobijen povezivanjem informacija iz dve tabela.
Tipovi relacija u okviru baze podataka
Postoje tri različita tipa relacija u okviru baze podataka. Svaka relacija je dobila naziv prema broju redova u tabeli koji bi mogli da uđu u relaciju i svaki od ova tri tipa relacija pojavljuje se između dve tabele.
Relacije „jedan prema jedan“ se javljaju kad se svaki unos u prvoj tabeli uklapa sa jednim i samo jednim zapisom u drugoj tabeli. Relacije „jedan prema jedan“ se retko kad koriste jer je često mnogo jednostavnije staviti sve informacije u jednu tabelu. Neki kreatori baza podataka koriste prednosti ove relacije pri stvaranju tabela koje sadrže podskup podataka iz druge tabele.
Relacije „jedan prema više“ su najčešći tip relacija koji se koristi u bazama podataka. Javlja se onda kad se jedan zapis iz Tabele A uklapa sa jednim ili više zapisa iz Tabele B, ali se, pri tom, svaki zapis iz Tabele B uklapa samo sa jednim zapisom iz Tabele A. Na primer, relacija između tabele Teachers (Nastavnici) i tabele Students (Učenici) u bazi podataka osnovne škole predstavljao bi tip „jedan prema više“ jer svaki učenik ima samo jednog nastavnika, ali svaki nastavnik ima veliki broj učenika. Takav tip relacije „jedan prema više“ onemogućava pojavu dupliranja podataka.
Relacije „više prema više“ javljaju se kad se svaki zapis u Tabeli A poklapa sa jednim ili više zapisa u Tabeli B, a svaki zapis u Tabeli B poklapa se sa jednim ili više zapisa u Tabeli A. Na primer, relacije između tabele Teachers (Nastavnici) i tabele Courses (Predmeti) u osnovnoj školi verovatno će biti tipa „više prema više“ jer svaki nastavnik može da podučava više od jednog predmeta, a više od jednog nastavnika može da podučava jedan predmet.
Rekurzivne relacije: Poseban slučaj
Rekurzivne relacije se pojavljuju kad imamo samo jednu tabelu. Da bi se objasnio taj tip relacije obično se koristi primer tabele Employees (Zaposleni) koja sadrži informacije o šefu svakog radnika. Svaki šef je takođe radnik i ima svog šefa. U tom slučaju govorimo o rekurzivnoj relaciji „jedan prema više“ jer svaki radnik ima jednog šefa, a svaki šef može da ima više od jednog radnika.
Uspostavljanje relacija pomoću stranog ključa
Relacije između tabela uspostavljate pomoću definisanja stranog ključa. Taj ključ pokazuje relacionoj bazi podataka kakav odnos treba uspostaviti između tabela. U mnogim slučajevima, Tabela A sadrži primarne ključeve koji se referenciraju na Tabelu B.
Hajde ponovo da razmotrimo primer tabela Teachers (Nastavnici) i Students (Učenici). Tabela Teachers sadrži samo identifikacioni broj, ime i kolonu u kojoj se nalazi naziv predmeta (Course):
Tabela Students obuhvata identifikacioni broj, ime i kolonu u kojoj se nalazi strani ključ (Teacher_FK).
Kolona Teacher_FK u tabeli Students referencira vrednost primarnog ključa nastavnika u t