Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 22.2.2014, 13:41   #1
Bolton
Član
 
Član od: 16.6.2006.
Lokacija: Surčin
Poruke: 434
Zahvalnice: 19
Zahvaljeno 117 puta na 89 poruka
Slanje poruke preko Skypea korisniku Bolton
Određen forumom Projektovanje baze sa relacijom roditelj-dete

Pozdrav svima! Kao što naslov kaže, potrebna mi je pomoć oko projektovanja baze zasnovane na principu relacije roditelj-dete. Do sada je situacija bila sledeća: imam 4 tabele a odnos između njh bi se mogao prikazati na sledeći način:
Kod:
tabela1 -> tabela2 -> tabela3 -> tabela4
Tabela1 je roditelj tabeli2, a ona je roditelj tabeli3 i na kraju tabela4 je dete tabele3. To mi nije bio problem sve dok mi nije postavljen zahtev da tabela4 može da bude dete bilo koje tri tabele. Tu nastaje problem jer sam u tabelama 2,3 i 4 imao kolonu roditelj_id i na taj način sam selektovao podatke iz baze koristeći spajanja, pa je tako upit izgledao ovako:
Kod:
SELECT tabela1.id,tabela1.naziv,tabela2.id,tabela2.naziv,tabela3.id,tabela3.naziv,tabela4.id,tabela4.naziv
FROM tabela1
INNER JOIN tabela2
ON tabela1.id = tabela2.roditelj_id
INNER JOIN tabela3
ON tabela2.id = tabela3.roditelj_id
INNER JOIN tabela4
ON tabela3.id = tabela4.roditelj_id
Tabela1 ima sledeću strukturu:
Kod:
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| naziv | varchar(50) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
Struktura tabela 2,3 i 4 izgleda ovako:
Kod:
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| roditelj_id | int(11)     | NO   |     | NULL    |                |
| naziv       | varchar(50) | NO   |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
Na osnovu dobijenih podataka pravio sam meni koji je izgledao ovako:
Kod:
<li>Tabela1
  <ul>
    <li>Tabela2
      <ul>
        <li>Tabela3
          <ul>
            <li>Tabela4</li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</li>
Sada treba da izmenim bazu kako bih kroz CMS mogao da postavim pripadnost tabele4 bilo kojoj od prethodne 3 tabele tako da kada preuzmem podatke iz baze mogu da napravim meni gde će tabela4 u meniju biti prikazana kao podmeni unutar te pripadajuće (roditeljske) tabele. Na priloženoj slici grafički je prikazan problem koji moram da rešim. Nadam se da sam bio dovoljno jasan. Hvala unapred na svakoj pomoći!
Priložene slike
Kliknite na sliku za veću verziju

Ime:	tabele.jpg
Viđeno:	28 puta
Veličina:	35,6 KB
ID:	48412  
Bolton je offline   Odgovor sa citatom ove poruke
Stara 24.2.2014, 20:57   #2
Bolton
Član
 
Član od: 16.6.2006.
Lokacija: Surčin
Poruke: 434
Zahvalnice: 19
Zahvaljeno 117 puta na 89 poruka
Slanje poruke preko Skypea korisniku Bolton
Post Re: Projektovanje baze sa relacijom roditelj-dete

Evo da sam sebi dam odgovor na postavljeno pitanje, pa možda nekome zatreba. Rešio sam problem tako što sam u četvrtu tabelu dodao kolonu "roditelj_naziv" i izmenio sam upite tako da se u "WHERE" uslovu proverava koji je naziv roditelja i koji je njegov ID. Jeste da nije baš najelegantnije rešenje ali u ovom slučaju funkcioniše.
Bolton je offline   Odgovor sa citatom ove poruke
Stara 24.2.2014, 21:00   #3
Eni
Banana
 
Član od: 9.1.2006.
Lokacija: _Cloud
Poruke: 6.106
Zahvalnice: 697
Zahvaljeno 2.628 puta na 1.354 poruka
Određen forumom Re: Projektovanje baze sa relacijom roditelj-dete

Ovo je savršen materijal za grafove.
Eni je offline   Odgovor sa citatom ove poruke
Stara 24.2.2014, 21:20   #4
water wizard
Deo inventara foruma
 
Član od: 29.1.2008.
Poruke: 20.482
Zahvalnice: 433
Zahvaljeno 4.007 puta na 3.729 poruka
Određen forumom Re: Projektovanje baze sa relacijom roditelj-dete

i učenje normalizacije baze podataka ili kako se već zvaše
water wizard je offline   Odgovor sa citatom ove poruke
Stara 24.2.2014, 22:46   #5
Bolton
Član
 
Član od: 16.6.2006.
Lokacija: Surčin
Poruke: 434
Zahvalnice: 19
Zahvaljeno 117 puta na 89 poruka
Slanje poruke preko Skypea korisniku Bolton
Određen forumom Re: Projektovanje baze sa relacijom roditelj-dete

To nije problem, baza je normalizovana do treće normalne forme. Ovo što sam naveo je samo mali primer koji sam trebao da rešim. Pregledao sam nekoliko knjiga koje se bave rešavanjem ovakvih zadataka, tj. hijerarhijskim strukturama baza podataka. Model koji sam ja koristio je takozvani Adjacency List, odnosno gde svaka tabela dete ima kolonu "roditelj_id" koja referencira kolonu sa primarnim ključem roditelja. Međutim, u slučaju gde jedna tabela može da ima bilo kojeg roditelja ovo nije dobro rešenje, jer bi u tom slučaju morao da imam 3 kolone za 3 moguća roditelja.
Bolton je offline   Odgovor sa citatom ove poruke
Stara 27.2.2014, 19:22   #6
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: Projektovanje baze sa relacijom roditelj-dete

Samo obrati pažnju na upit koji si uraido.
Decu join-uješ između sebe - što u praksi sada ne predstavlja problem osim što krši logiku.
Ali u budućnosti ako budeš trebao da koristiš LEFT ili RIGHT join može doći do nepredviđenih rezultata.
Ivan452 je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Command & Conquer (2012) Packy Strateške igre 288 19.11.2013 14:20
Pomoć oko editovanja tabele baze Miki2 Web razvoj 2 16.7.2013 2:29
download baze podataka sa free foruma Drejk Serverske aplikacije i baze podataka 3 28.3.2013 2:06
Pravljenje PC igre Arcibalde Pravljenje igara 43 23.10.2010 15:22
povezivanje baze podataka sa serverom deus[awesome] Programiranje 5 23.12.2006 2:02


Sva vremena su po Griniču +2 h. Sada je 22:47.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com