Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[POSINT] 2. domaća zadaća - 2021/2022

PiqueBlinders

Samo da potvrdim, trebamo pisati SQL upit samo za prva 3 zahtjeva?


Yasuke

zisku Ovako piše u edgaru:
“Napisati SQL upite za zadnji mjesec poslovanja za prva tri upita gore”

Koliko dimenzijskih tablica treba biti? Jer u dProducts bi se ja mislim trebalo stavit i suppliers i categories


PiqueBlinders

Bono ja jednostavno ne znam di bi poceo s ovim.

jel postoji jedinstveno tocno rjesenje ili se moze na vise nacina?


Yasuke

zisku Ne znam, ni ja se ne snalazim bas.


cajaznun

Najlakse krenuti tako da prvo importate nortwind bazu na server i onda kreirate svoju praznu Northwind_inicijali_SP. Potom kreirate dimenzijske tablice (dCustomer, dDiscount, dShipper, dProduct, dDate,dTime…) koje zatim popunjavate sa podacima iz izvorne baze (koristite pr. FROM Northind2015.dbo.Customer) - paziti na null vrijdnosti i nezaboravite dodati redatk sa ‘Nepoznato’ vrijednostima. Neke stupce mozete izostaviti u skladistu podataka tipa image i slicno. Onda kreirate cinjenicne tablice - cOrder i onda cOrderItem na koje nakacite strane kljuceve na dimenzijske tablice. Pa nakon toga popunjavate te cinjenicne tablice - paziti na ID-jeve i spajanje sa retkom koji u sebi sadrzi vrijednosti ‘Nepoznato’. Ja sam spojio sql server na Datagrip (IDE za baze podataka od jetBrainsa) na kojem je to kreiranje tablica automatizirano samo upisujete ime stupca, type, i odabirate primarne i strane kljuceve, not null, unique redove. Kod inserta savjet: umjesto switch case postoji naredba IIF koja sluzi kao ternarni operator npr. IIF((Title is NULL), ‘Nepoznato’, Title) pa ce vam kod biti pregledniji.
Ja ukupno imam 9 dimenzijskih i 2 cinjenicne tablice, ali taj broj dimenzijskih tablica moze varirati.
Kad sve to napravite napravite dijagram (samo desni klik i odabete diagram) i na kraju kreirate ona tri sql upita.


PiqueBlinders

cajaznun
thx, proucio sam ono rjesenje na materijalima i kako mi se cini tvoje je dosta slicno.
najvise me bunilo postoji li vise nacina na koji bi odredili cinjenicne tablice.

ne znam koliko su strogi kad zakljucuju da je zadaca prepisana pa se dobiju negativni bodovi…


Skaxen

Par pitanja jer mi se neda failat i raditi pola toga iz pocetka:
Ima li smisla grupirati Supliers zajedno sa Products i Categories ili je Supliers bolje ostaviti kao svoju dimenziju?
Ima li smisla staviti posebni “Nepoznato” zapis u dProduct dimenziju ili je to samo nesto sto bi bas bas uvijek trebao raditi za apsolutno svaku dimenziju?
Ako neka dimenzija ima ID na neku drugu tablicu, npr kao sto Suppliers ima CItyID na City, ali u originalnoj bazi nisu povezani sa foreign key-om ima li smisla ako npr napravim dimenziju dSupplier osim CityID jos u dimenziju ubaciti i atribute iz City?
U ovom zadnjem slucaju specificno sam primijetio da postoje neki CityID kljucevi u Suppliers kojih nema u City pa jel to znaci da mozemo pretpostavljati da te dvije tablice nisu nes posebno vezane?


adidas

3.Kojem prijevozniku su isplaćeni najveći honorari?

Ne vidim nigdje honorare za prijevoznike.
Jedina cijena koju vidim je UnitPrice u OrderItems koja mi izgleda kao cijena prodaje svakog proizovda, a ne cijena/honorar prijevoza proizvoda.


Yasuke

adidas Jel bi to možda bio onaj Freight kojeg imamo u Orders?


adidas

Bono Mislim da je. U smislu brodarina / honorar.


adidas

Jel trebamo dDate i dTime za obje činjenične tablice? Ili je dovoljno samo dDate?


hejhoj

jel koristimo dDate i dTime iz 1.zadace ili nove generiramo iz northwind?


Doktor0807

vdvd Iz prve zadaće. Datumska se nikad ne uzima iz ulaza nego se generira uvijek sa strane.


hejhoj

ne mogu se odluciti da stavim u cinjenicnoj tablici primarni surogatni kljuc ili kompozitni od dimenzijskih surogatnih, jel ima ko savjet?


Doktor0807

pa kao što piše na prezentaciji, ako misliš da ti load neće puknut ili ako se dosta brzo izvrti load nema potrebe kreirati primarni surogatni ključ, sad o broju podataka ovisi hoćeš li kreirati kompozitni ključ od dimenzijskih ili ćeš ostaviti činjeničnu tablicu bez primarnog ključa i ubrzati upite kreiranjem indeksa na pojedinom stranom ključu (koliko sam čitao SQL Server ne kreira indeks automatski za foreign key), ali vjerujem da možeš koristit kompozitni ključ


hejhoj

Doktor0807 puno ti hvala🙂


PiqueBlinders

Tko dostavlja proizvode koji se najviše prodaju?

misli li se na supplier ili shippers


adidas

zisku Ili ship 😅


Elendur19

Jeste li atribute kao sta su UnitPrice, Quantity, Discount stavili u cOrderItem tablicu ili ste ih stavili u neku dimenzijsku ? Nisam siguran jer vidim da se u prezentacijama spominje da u atribute cinjenicnih tablica ulaze uglavnom rezultati agregatnih funkcija. Treba li staviti u tu tablicu i CustomerID ili cemo samo povezati OrderID sa OrderID-om tablice cOrder?


Doktor0807

Zagor prezentacija 6 slajd 16, ja bih vjerovao ovom i ostavio to u činjeničnoj
Što se drugog pitanja tiče, staviti customerID u u tu činjeničnu(štp bo značilo da ćeš imati customerID u jednoj i drugoj činjeničnoj) -> prezentacija 6 slajd 15 ti govori baš o tome kako stavit atribute ako imaš ovako povezane tablice


adidas

Zagor Meni je ovo pomoglo da skužim di šta treba staviti.

  • Činjenična tablica predstavlja neki proces koji se prati. U našem slučaju to je narudžba proizvoda.

  • Dimenzijska tablica je kao detaljniji opis toga procesa. Dobar trik je da dimenzijske tablice imaju značenje same za sebe bez da se spoje sa drugim tablicama. Npr. nama je dimenzija kupac. Tablica kupac može postojati sama za sebe i značiti nešto.

  • Mjere su najčešće numeriče vrijednosti koje opisuju proces. Same ne znače ništa. Npr. imamo samo činjeničnu tablicu i Quantity. To nam ne znači pretjerajno jer ne znamo ni koji kupac je to kupio, ni koji je proizvod to itd.

Ideja je da se mjera korisit u agregatnim funkcijama kada se činjenična tablica spoji sa jednom ili više dimenzija. Npr. spojimo dimenziju dShippedDate i dProduct. Gledamo kako se mjera TotalPrice kreće za najprodavanije proizvode zadnji mjesec.

Sada UnitPrice, Quantity i Discount bi bile mjere u cOrderItem jer one opisiju Narudžbu (proces).


PiqueBlinders

Obratiti pozornost na iste dimenzije u više uloga (ovo će utjecati na ocjenu)

jedino ste datume koristili u vise uloga?


hejhoj

zisku ja da!


adidas

zisku
Mislim da u u SQL upitima treba stvoriti aliase za dDate i dTime. Druga opcija je stvoriti VIEW za svaku sifru za datum/vrijeme u cinjenicnoj tablici.


Rudee

se to meni cini ili na prezentaciji pise da je rok 22.11. u 8h a na edgaru imamo vremena do 21.11. u 8h?


svemia

Rudee To sam i ja skuzila. Na predavanju je rekao da ce biti taj rok s prezentacije, sad ne znam sta se dogada…


Sljedeća stranica »