Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zaprojektować taką bazę?
Forum PHP.pl > Forum > Bazy danych > MySQL
mal2065
Witam,

proszę o sugestię, jaką strukturę powinna mieć prosta baza danych (jak zbudowane tabele) dla następującego przykładu:

Mamy wielu autorów, którzy tworzą swoje publikacje wg ustalonego szablonu tego, co ma być zawarte w publikacji.

przykładowa tabela AUTORZY
id_autora
imie_autora
nazwisko_autora
haslo_autora

Każdy z autorów pisze publikację i muszą się w niej znaleźć rozdziały WSTĘP, ROZWINIĘCIE, ZAKOŃCZENIE. Ponadto do każdego rozdziału można dodawać wiele zdjęć.

Jaką strukturę powinny posiadać tablice ROZDZIALY i ZDJECIA - tablica autorów jest chyba ok? (bo dynamiczne tworzenie tabel dla każdego z użytkowników nie jest chyba najlepszym pomysłem?)

Tabele AUTORZY i ROZDZIALY, a takze ROZDZIALY i ZDJECIA powinny być połączone, aby można było wyszukiwać np. rozdział danego autora, czy zdjęcia należące do wybranego rozdziału, napisanego przez danego autora.

Z góry dziękuję za pomoc.
phpion
autor: id, imie, nazwisko
publikacja: id, autor_id, tytul
rozdzial: id, publikacja_id, numer_rozdzialu, wstep, rozwiniecie, zakonczenie
zdjecie: id, rozdzial_id

Powinno wystarczyć. Jeśli nie jest określone, że jedna publikacja jest napisana przez jednego autora (czyli różni autorzy mogą pisać rozdziały do jednej publikacji) to przenieś atrybut author_id z publikacja do rozdzial.
mal2065
Dzięki za szybką odpowiedź!

Mam jedną wątpliwość - czy w opisanej przez Ciebie strukturze nie jest tak, że zdjęcie jest przypisane wyłącznie do publikacji (przez rozdzial_id)?

Chciałbym, żeby zdjęcia były przypisane do rozdziału w publikacji danego autora. Np. kilka zdjęć do wstępu i kilka do zakończenia..

ps. Jeden autor może edytować tylko swoją publikację.

Pozdrawiam
nowotny
Cytat(mal2065 @ 23.07.2008, 20:29:34 ) *
Mam jedną wątpliwość - czy w opisanej przez Ciebie strukturze nie jest tak, że zdjęcie jest przypisane wyłącznie do publikacji (przez rozdzial_id)?

Zdjęcie jest przypisane do rozdziału a rozdział do publikacji... gdzie tu widzisz problem...?

Cytat(mal2065 @ 23.07.2008, 20:29:34 ) *
Chciałbym, żeby zdjęcia były przypisane do rozdziału w publikacji danego autora. Np. kilka zdjęć do wstępu i kilka do zakończenia..

No to tak masz...
mal2065
Czy mógłbyś podać mi przykład zapytania wybierającego zdjęcia dla wstępu w publikacji "Mowa" autorstwa Kasi? Będę bardzo wdzięczny.

autor: id, imie, nazwisko
publikacja: autor_id, tytul
rozdzial: publikacja_id, numer_rozdzialu, wstep, rozwiniecie, zakonczenie
zdjecie: id, rozdzial_id

Chciałbym się też dowiedzieć do czego w tym wypadku służy pole numer_rozdzialu? Czy wstęp, rozwinięcie i zakończenie są składowane w jednym rekordzie, czy też w trzech? Proszę o cierpliwość - chciałbym się przy tej okazji czegoś nauczyć...
nowotny
Hmm... w zasadzie jak teraz myślę to nie będzie działać jak chcesz... ja bym rozbił tabelę "rozdziały" jeszcze bardziej:

rozdzial: id_rozdzialu, id_publikacji, typ_rozdzialu(wstep, rozwiniecie, zakonczenie), tresc
phpion
Możesz zrobić tak jak napisał ~nowotny (czyli rozbić każdy rozdział na 3 rekordy) lub modyfikując mój przykład:
zdjecie: id, rozdzial_id, typ (1 = wstęp, 2 = rozwinięcie, 3 = zakończenie)
i w praktyce wyglądałoby to tak:
Kod
id | rozdzial_id | typ
1 | 1 | 1 <- zdjecie o id=1 przypisane do rozdzialu o id=1 jako fotka dla wstepu (typ = 1)
2 | 1 | 1 <- kolejna fotka do wstepu
3 | 1 | 2 <- fotka dla rozwiniecia
4 | 1 | 2 <- i nastepna
5 | 1 | 2 <- i jeszcze jedna
6 | 1 | 3 <- fotka dla zakonczenia

7 | 2 | 1 <- zdjecie o id=7 przypisane do rozdzialu o id=2 jako fotka dla wstepu (typ = 1)
itd
itd
mal2065
Dziękuję Wam bardzo. Teraz mi się wszystko zgadza... wybiorę sobie sposób dogodniejszy do wykonywania zapytań z php.

Witam ponownie,

a co z sytuacją, gdy publikacja może mieć kilku autorów (nie wszyscy mogą edytować daną publikację, tylko jej kilkoro autorów)? Czy jedynym rozwiązaniem jest wprowadzenie do pola author_id w tablicy publikacja tablicy (array) z wartościami id autorów? Czy też można zmodyfikować strukturę bazy tak, aby uwzględniała taką sytuację?
phpion
Nie oczekuj za każdym razem gotowego rozwiązania...
autor: id, imie, nazwisko
publikacja: id, tytul
autor_publikacja: autor_id, publikacja_id
mal2065
Dzięki wielkie za pomoc. Jak tylko znajdę trochę czasu,to poczytam wstępy i tutoriale do mysql, które gdzieś tu widziałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.