skanuj0325 (2)

skanuj0325 (2)



340 PHP i MySQL dla każdego

pod kilkoma nazwiskami. Oczywiście można by wprowadzić tabelę Pseudonimy powiązaną z tabelą Autorzy relacją..., no właśnie: jeden do wiele, czy wiele do wiele? A zatem relacja ta powinna mieć postać taką, jak na rysunku 12.2A czy 12.2B?


Rysunek 12.2.

Różne wersje relacji między tabelami Autorzy i Pseudonimy

W wersji pierwszej zakładamy, że jeden autor może mieć wiele pseudonimów, ale jeden konkretny pseudonim może należeć tylko do jednego autora. W wersji drugiej zakładamy, że jeden autor może mieć wiele pseudonimów, ale i jeden pseudonim może należeć do wielu autorów. Jednakże dopuszczenie, aby jeden wpis z tabeli Pseudonimy odpowiadał kilku wpisom z tabeli Autorzy powoduje, że nie odwzorowujemy wszystkich potrzebnych informacji. Jak bowiem dowiedzieć się wtedy, jakie książki wydał pod pseudonimem Jan Kowalski autor Adam Nowak, kiedy pseudonim Jan Kowalski jest powiązany jednocześnie z pięcioma innymi autorami?

Lepsze byłoby zatem rozwiązanie pierwsze (rysunek 12.2A). Wtedy, jeśli Adam Nowak i Janusz Malinowski stosowali pseudonim Jan Kowalski, w tabeli Pseudonimy powinny pojawić się dwa wpisy. Taka sytuacja została zobrazowana na rysunku 12.3. Niestety, to rozwiązanie wcale nie eliminuje wszystkich naszych problemów. Zauważmy, że Jan Kowalski w takiej sytuacji i tak musiałby się dwukrotnie pojawić w tabeli Autorzy, która jest powiązana z konkretnymi pozycjami książkowymi. Niezbędne byłoby przecież powiązanie pseudonimu z książkami. Najlepiej powróćmy zatem do rozwiązania pierwotnego, w którym tabela Autorzy jest powiązana relacją z samą sobą.

Rysunek 12.3.

Przykładowe wiersze w tabelach Autorzy i Pseudonimy


Pseudonim


Id


Autorld


2 2


Pseudonim

Jan Kowalski Jan Kowalski


Id


Dane_

Adam Nowak Janusz Malinowski


Nie będziemy jednak wprowadzali żadnych dodatkowych pól do tabeli Autorzy. Technicznie problem rozwiążemy w taki sposób, że w tabeli Autorzy znajdą się imiona i nazwiska wszystkich autorów, niezależnie od tego czy będą to dane rzeczywiste, czy pseudonimy. Dodatkowo wprowadzimy pomocniczą tabelę (może się ona nazywać Pseudonimy, choć będzie odgrywała inną rolę niż na przedstawionych wyżej rysunkach), która odzwierciedli powiązania między poszczególnymi elementami w tabeli Autorzy’.

Relacja między opiniami o książkach a książkami to wiele do jednego; jedna książka może mieć wiele opinii, natomiast konkretna opinia może dotyczyć tylko jednej książki. Podobnie relacja między klientami, którzy wydali opinie o książkach, a opiniami, to jeden do wielu, gdyż jeden klient mógł wydać wiele opinii, ale konkretna opinia mogła zostać wydana tylko przez jednego klienta.

3 Jak widać, nawet wydawałoby się tak prosty i banalny problem, ponadto odbiegający od głównego przeznaczenia bazy, może wymagać głębszego przemyślenia.


Wyszukiwarka

Podobne podstrony:
skanuj0161 (9) 172 PHP i MySQL dla każdego Zwraca ona ciąg strl, z którego począwszy od znaku o inde
skanuj0163 (9) 174 PHP i MySQL dla każdego Listing 6.12. Wykorzystanie funkcji strtok <?php $str

więcej podobnych podstron