Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da ovo normalizujem

[es] :: Baze podataka :: Kako da ovo normalizujem

[ Pregleda: 4315 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LightBow
London

Član broj: 4829
Poruke: 158
..m.net.11.13.84.in-addr.arpa.



+1 Profil

icon Kako da ovo normalizujem26.08.2007. u 07:05 - pre 202 meseci
Radim neku normalizaciju na osnovu forme. U pitanju je fiktivna agencija koja nudi kratke kurseve skijanja. E sad, data je forma koju je vlasnik do sada rucno ispunjavao, a ja treba da iz te forme izvedem relacije koje ce biti u 3NF.
Jednu sam formu uradio, ali kod ove jednostavno ne vidim resenje. Evo kako forma izgleda:
Code:
[b]Ski-Italia Customer Booking Form[/b]

Booking Reference Number: R170
Booking Date: 19th September 20xx

Customer Name: Jack Douglas
Customer Address: 17 High Street Ingleside 
Customer Telephone (day): 0208 703-1948
Customer Telephone (evening): 0208 441-6503


Party consists of:

Name            D.O.B        Proficiency
Jack Douglas     18/01/60     B
Susie Douglas    02/12/64      B


Course#: 1278P
Beginning Date: 12-MAR-xx
End Date: 17-MAR-xx
Course Type: Intermediate


Dakle polaznici kursa rezervisu kurs, kojih ima nekoliko. Ovde se vidi da jedan polaznik (customer) pravi rezervaciju (booking). Ali..svaki taj polaznik moze da rezervise za vise ljudi. U ovoj formi (u sekciji party consist of) vidimo da je Jack Douglas rezervisao za sebe i Susie Douglas, koja je znaci isto customer.
E sad, iz prethodne normalizacije postoje entiteti (relacije) Course, Customer, i Booking.
Meni sad nije jasno kako da ovu formu dovedem u 2NF, tj. da uklonim non-atomic atribut party. Ako uradim po uputstvu iz knjige, taj party bi isao u Customer tabelu. Ali onda to cini kardinalnost relacije Customer -Booking Many to Many, zar ne?

I jos jedno pitanje. Ako jedan polaznik moze posle zavrsenog pocetnickog kursa da bukira recimo intermidiate kurs, koja je onda kardinalnost relacije Customer - Course?
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+49 Profil

icon Re: Kako da ovo normalizujem26.08.2007. u 08:45 - pre 202 meseci
Zdravo!

Trebalo bi da imaš dve relacije između Customer i Booking: jedan-više za relaciju koja govori ko je rezervisao, i relaciju više-više za korisnike usluge (Party Consists Of). Onaj ko je rezervisao ne mora obavezno da se nadje u Party Consists Of (roditelji deci uplate časove skijanja, svi su Customer-i).

Nema relacije izmedju Customer i Course, Customer-Booking jedan-više i Course Booking jedan-više.


Nisam ni znao da znam dok nisam prob'o!
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
91.150.108.*



+11 Profil

icon Re: Kako da ovo normalizujem26.08.2007. u 08:51 - pre 202 meseci
U osnovnoj tabeli koju si napraio imas vezu narucilac prema tabeli korsinika usluga.

Dodas jos jednu tabelu polaznici koja ima samo id narucioca i id kursa, pa preko nje povezujes onsonvu tabelu kurseva sa tabelom korisnika usluga. Tako imas mogucnost da upises neogranicen broj polaznika kursa.
 
Odgovor na temu

LightBow
London

Član broj: 4829
Poruke: 158
..m.net.11.13.84.in-addr.arpa.



+1 Profil

icon Re: Kako da ovo normalizujem26.08.2007. u 18:47 - pre 202 meseci
Hvala na odgovorima. Ako sam dobro shvatio, ove tri tabele koje sam vec definisao su u sustini dovoljne da rese problem ove forme, samo treba unistiti direktnu vezu izmedju Customer i Course. Znaci ovako bi trebalo da napravim:


CUSTOMER-1------m-BOOKING-m------1-COURSE

Onda bi u Customer trebao da ide foreign key bookingNo, ali kako onda zabeleziti ostale korisnike koji nisu narucioci?
Sad vidim da vas ipak nisam razumeo.
Citat:
broker: U osnovnoj tabeli koju si napraio imas vezu narucilac prema tabeli korsinika usluga.


zamolio bih te ako mozes da objasnis ovo. Da li to znaci da ipak tri tabele nisu dovoljne?
Hvala
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
91.150.108.*



+11 Profil

icon Re: Kako da ovo normalizujem26.08.2007. u 21:35 - pre 202 meseci
Kada bi napisao ovde koje su te tri tabele mozda bih mogao da ti odgovorim. :)
 
Odgovor na temu

LightBow
London

Član broj: 4829
Poruke: 158
...net.155.13.84.in-addr.arpa.



+1 Profil

icon Re: Kako da ovo normalizujem27.08.2007. u 02:51 - pre 202 meseci
Tabele su Customer, Booking i Course, kao sto sam predstavio skicom. One crtice su relacije, -1---m- predstavlja one to many relaciju izmedju leve i desne tabele. Dakle ja sam zamislio Izmedju Customer i Booking 1 to many relaciju, a izmedju Booking i Course many to 1. A Customer i Booking nisu u direktnoj relaciji. Ali tu mi je opet sumnjiva relacija izmedju Customer i Booking. Prvo sto ako je to stvarno one to many, onda ce u relaciji biti samo osoba koja je izvrsila rezervaciju, u ovom primeru Jack Douglas, pa nece biti zabelezeno da su i ostali polaznici uzeli kurs (u ovom primeru Susie Douglas).
Drugo, pretpostavimo da cak i ne postoji mogucnost da jedan customer (polaznik) rezervise za druge ljude, nego da svako rezervise za sebe. Da li bi i u tom slucaju ova relacija bila one to many? Jer jedan polaznik moze posle zavrsenog begginers kursa da rezervise recimo intermediate. Dakle bojim se da ne razumem same osnove kardinalnosti relacije potpuno.
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.ADSL.neobee.net.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Kako da ovo normalizujem27.08.2007. u 05:49 - pre 202 meseci

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Baze podataka :: Kako da ovo normalizujem

[ Pregleda: 4315 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.