Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dobra praktyka a laczenie jednej tabeli z wieloma
Luciano
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 1
Dołączył: 26.07.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Witam,

Zaprojektowalem pewna strukture niestety moja wiedza nt. baz danych nie jest na tyle duza abym mogl jednoznacznie okreslic czy takie rozwiazanie jest dopuszczalne.

Chcialbym aby wiekszosc obiektow w systemie bylo "zasobem". Kazdy obiekt mial by unikalny numer ID. Powiedzmy, ze mam dwa rodzaje obiektow: grafike oraz muzyke. Obydwa obiekty sa odzwierciedlone w bazie danych tabelami o tych samych nazwach. Problem polega na tym ze ID zasobu musi byc unikalne. Nie moze sie trafic grafika z tym samym id zasobu co muzyka.
Mam wiec tabele "zasoby", ktora musi laczyc sie z tabelami grafika i muzyka w relacji 1-1.

Jedyne rozwiazanie tego problemu, ktore przechodzi mi do glowy to stworzy taka tabele:

ZASOBY
----------
ID
RODZAJ
LINK


Kolumna rodzaj przyjmowala by wartosci 1 - dla muzyki i 2 - dla grafiki a kolumna link zawierala ID obiektu z ktorym jest polaczona. Takie rozwiazanie z pewnoscia dziala. Nie jestem jednak pewnien czy nie gwalci to wszystkich zasad dobrej praktyki bazo danowej biggrin.gif Kolumna rodzaj definiuje do jakiej tabeli koresponduje kolumna LINK przez co (moge sie mylic) nie moge stworzyc np. kluczy obcych.

Pytanie do Was drodzy eksperci czy takie rozwiazanie jest dopuszczalne czy powinno byc stanowczo zabronione? Jedyne co przychodzi mi jeszcze dlo glowy to usunac rodzaj oraz link i dla kadego typu obiektow tworzyc nowe tabele laczace ale w przypadku wielu typow obiektow mial bym mnustwo tych tabel.

Ten post edytował Luciano 25.03.2010, 14:08:59


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Jak najbardziej jest dopuszczalne. Klucze obce też jak najbardziej stworzysz. W tabelach dla poszczególnych typów po prostu zrób pole id o identycznej wartości, jak ID wiersza w zasoby, z którym są one powiązane. Dostajesz wtedy identyfikującą relację 1-1, a że takich tabel jest więcej, to cóż... baza danych to nie tylko formalna struktura, ale i semantyka, którą my sami definiujemy. Jej część można zapisać bezpośrednio w strukturze i powiedzieć: "tego mi pilnuj", ale w żadnym wypadku nie jest tak, że jak czegoś się nie da wyrazić, to jest to zabronione i nawiedzi Cię agent MySQL-a ze spluwą oraz hiszpańską ikwizycją, po czym Cię nafaszerują ołowiem.



--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:35