Svaka imenica predstavlja nesto ili nekoga koga hoces da pratis u bazi - entitet je rec koja se cesto koristi. Glagoli oznacavaju ili atribute entiteta ili veze/ transakcije izmedju entiteta.
Code:
Skole => entitet Skola
Mogu da budu glane i podrucne. => entitet TipSkole (Glavna, Podrucna)
Svaka podrucna skola pripada nekoj glavnoj skoli => ovo je hijerarhija, to cemo malo detaljnije da razmotrimo.
Glane i podrucne skole su medjusobno povezane. Svaka podrucna skola pripada btacno jednoj glavnoj skoli.
Proizvodjaci => entitet Proizvodjac
Stolovi => entitet Sto
jedinstveni proizvodni broj => atribut entiteta Sto
Stolovi mogu da budu razlicitog tipa => entitet TipStola
Proizvodjaci proizvode stolove <=> veza ismedju stolova i proizvodjaca.
Skole kupuju stolove od proizvodjaca na neki datum i placaju neku cenu => transakcija Kupovina
Atributi transakcije Kupovina ( Skola, Proizvodjac, Sto, DatumKupovine, CijenaKupovine)
[\code]
Entite skola je interesantan, jer je hijerarhija. Glavne skole su kao roditelji, a podrucne skole su im kao deca. Podrucne skole ne mogu imati svoje pod-skole, znaci hijerarhija je tacno dva nivoa duboka. To se modelira lako:
Code:
Skola TipSkole GlavnaSkola ImeSkole Adresa
------ ----------- ----------- ------------------- ----------
'GS1', 'Glavna ', NULL 'Glavna skola 1', 'adresa x'
'PS1', 'Podrucna', 'GS1', 'Podrucna skola 1' 'adresa y'
'PS2', 'Podrucna', 'GS1', 'Podrucna skola 2' 'adresa z'
'GS2', 'Glavna', NULL 'Glavna skola 2', 'adresa u'
'GS3', 'Glavna', NULL 'Glavna skola 3', 'adresa w'
'PS3', 'Podrucna', 'GS3', 'Podrucna skola 3', 'adresa w'
Moraju se postaviti ogranicenja:
1) Atribut Skole je Primary Key za tabelu.
2) TipSkole = 'Glavna' <=> GlavnaSkole IS NULL - na nivou tabele napises [TipSkole] = 'Glavna' EQV GlavnaSkola IS NULL.
Ogranicenje 2) zahteva da glavne skole nemaju roditelja, a da podrucne skole moraju imati roditelja.
Uocimo da:
Glavna skola 'GS1' ima dve podrucne skole - PS1 i PS2.
Glavna skola GS2 nema ni jednu podrucnu skolu.
Glavna skola GS3 ima jednu podrucnu skolu - PS3
Interesantna je i tabela Kupovine. Na primer, zabelezili smo ovo:
Code:
RbTransakcije Skola IdStola BrojKomada JedinicnaCena DatumKupovine
------------- ----- ------- ----------- --------------- -------------
1 GS1 Sto01 2 100.00 20170922
2 GS1 Sto02 2 15.00 20170925
3 PS1 Sto02 20 15.00 20170925
4 PS2 Sto02 30 17.00 20170925
5 GS3 Sto01 3 120.00 20171003
(5 row(s) affected)
Glavne skole placaju racune, pomocne ne mogu da plate. Kako bi izgledao kveri koji izlistava koliko kojih stolova treba da plate glavne skole, i koliko treba da plate. Na primer:
GS1: 1 Sto01 +2 Sto02 + 20 Sto02 + 30 Sto02 , pa onda i cene puta kolicine.Primetite da za PS1 i PS2, za isti ID stola imamo razlicitu cenu. Ocigledno je da nam treba informacija o tome koja glavna skola placa za koju podrucnu skolu....
Srecan rad :-)