Zidar,
Možeš li da mi pojasniš tvoj odgovor na ovu temu. Nešto nisam shvatio:
Citat:
Citat:
Ja: Ovo mi deluje strašno traljavo.
Zidar: Potpuno pogresno.
Da li se slažeš da je ovo što sam napisao traljavo ili se ne slažeš? Shvatio sam
da misliš da to zapravo NIJE traljavo, nego baš onako kako treba. Potreban mi
je baš tvoe mišjljenje, jer želim da rešenje bude NAJPRIBLIŽNIJE rešenju koje je
u duhu baza podataka i "normalnih formi", a ne rešenje koje mi je najlakše za
kasniju instant implementaciju. Dakle, treba mi školski.
Citat:
Drugi nacin, sa vestackim ID je traljav.
Zapravo, mislio si na ono prvo rešenje (prvu varijantu, kako sam je ja nazvao)?
Citat:
Tebe samo uzasava pomisao da bi mogao da pravis kveri koji zahteva 4 polja u JOINu.
Kao što rekoh, baš mi treba školski, ma koliko bi to kasnije proizvelo složenije upite.
Citat:
Zavisno od toga sta su u stvari ona 4 atributa, mogao bi da imas velike probleme ako
dodas vestacki kljuc, a mozda i nemas problema.
Na kraju ovog posta ću predstaviti šta mi konkretno treba, pa bih te zamolio da mi predložiš
rešenje koje je najviše u duhu baza podataka, a ne rešenje koje će mi kasnije doneti
najkraći SQL.
Citat:
Mnogo ljudi ce ti na ovom forumu i na forumu Baze Podataka odgovoriti da su autonumber
polja i izmisljena da bi se lako dobio PK kad god ti treba. Traba biti veoma oprezan s tim
pristupom.
Znam, zato sam i postavio pitanje koji je ispravan način. I ja lično koristim AutoNumber ID-je
iz praktičnih razloga, pa iz samog koda rešavam neka obavezna ograničenja. Sada, hoću
rešenje koje rešava što više tih ograničenja na sistemskom nivou, i želim da to bude školski.
Citat:
Naravno da necu ulaziti u dalju diskusiju o vestackim i stvarnim PK, to smo radili na forumu
Baze Podataka i svako je ostao pri svome.
:-)
Onda sam naleteo na pravog čoveka ;) Baš mi treba neko ko drži do pravila, bez obzira što
kasnije mogu imati više muke sa upitima, vezama i sl.
Da napomenem da ja nisam baš neupućen u baze podataka, ali ih zaista koristim tek kao
nešto sa strane. Neke moje baze podataka na primer za organizovanje izložbi pasa (C++
Builder program koji pristupa Access bazama) rade godinama bez ikakvih problema. Ali
ja nisam zadovoljan svojim dizajnom baze, jer je sve rađeno na brzinu i tek toliko da
proradi.
E sada, za potrebe nekog ispita, NE TREBA mi da pokažm profesoru KAKO PROGRAM RADI, što
je očigledno, nego je cilj da pokažem da je baza ISPRAVNO projektovana.
Evo konkretan problem (koji je zapravo samo deo zadatka), ali hoću da to bude projektovano
u duhu baza podataka. Dakle zanima me kako najbolje projektovati tabele i uspostaviti veze.
Radi se o kategorizovanju pasmina, koje imaju otpriliko ovakvu strukturu:
Group 1: Sheepdogs and Cattle Dogs (except Swiss Cattle Dogs)
Section 1: Sheepdogs
Australia
Australian Kelpie
Belgium
Chien de Berger Belge - Groenendael
Chien de Berger Belge - Laekenois
Chien de Berger Belge - Malinois
Chien de Berger Belge - Tervueren
Schipperke
Czekoslovakia (Slovakia)
Ceskoslovenský Vlcak
Croatia
Hrvatski Ovcar
...
...
Section 2: Cattle Dogs (except Swiss Cattle Dogs)
Australia
Australian Cattle Dog
Belgium
Bouvier des Ardennes
Belgium/France
Bouvier des Flandres/Vlaamse Koehond
...
Group 2: ...
...
...
...
Dakle, postoji hijerarhijska struktura:
1.nivo: Postoji 10
Grupa (Group 1, Group 2, ...)
2.nivo: Svaka grupa ima odredjeni broj
Sekcija, neke grupe manje neke više
3.nivo: Svaka Sekcija ima odredjeni broj
Drzava, neke sekcije manje a neke vise
4.nivo: Naziv
Rase (on je uvek i uvek jedinstven, bez duplikata)
Ovako ja vidim gornju strukturu:
| -------- | -------- | -------- | -------- |
| Atribut1 | Atribut2 | Atribut3 | Atribut4 |
| -------- | -------- | -------- | -------- |
| GRUPA | SEKCIJA | DRZAVA | RASA |
| -------- | ---------|--------- | -------- |
| Unique | Unique | Unique |
|<-------->|<------------------->|<-------->|
| GRUPA | SEKCIJA + DRZAVA | RASA |
|----------|---------------------|----------|
Pa sam mislio da to projektujem ovako:
Tabela1: Drzave (ovaj entitet mi treba zaseban u bazi i zbog drugih potreba druge potrebe)
1. naziv (PK)
2. ...
Tabela2: Grupe
1. naziv (PK)
2. ...
Tabela3: Sekcije
1. naziv (PK)
2. drzave.Naziv (PK) <--- veza ka Tabeli 1
3. ...
Tabela4: Rase
1. naziv (PK)
2. ...
Tabela5: Kompletna Pasmina
1. grupe.naziv <--- veza ka Tabeli 2
2. sekcije.naziv <--- veza ka Tabeli 3
3. drzave.naziv <--- veza ka Tabeli 1
4. rase.naziv <--- veza ka Tabeli 4
E sad, treba u nekoj drugoj tabeli da ukazem na neki slog iz tabele: "Kompletna Pasmina".
Tabela6: Upotreba
1. grupe.naziv <--- veza ka Tabeli 5
2. sekcije.naziv <--- veza ka Tabeli 5
3. drzave.naziv <--- veza ka Tabeli 5
4. rase.naziv <--- veza ka Tabeli 5
5. blablabla
6. itditditd
Postoji li pametniji nacin, kada je u pitanju ŠKOLSKI PRISTUP bazama podataka?