Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak przechowywac dane (powtarzalne)?, Chodzi o przechowywanie danych np. z tablicy...
mxm
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 9.06.2005

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


Witam!!

Chciałbym się zapytać jak przechowywać dane w Bazie MySQL.

Powiedzmy ze robię sobie baze z filmami np. do katalogowania włąsnych zbiorów płyt. Budowanie skryptu ma na celu czeste wyszukiwanie pozycji wg różnorodnych kryteriów (więc musi to być wydajna metoda przy tak dużych danych).

Mam formularz, w którym wypełnia się formularz. Większość danych jest prosta do wprowadzenia. Ale...

Problem 1: Jak przechowywać gatunki filmowe?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Można co prawda zrobić serialize i wrzucic do bazy ciag ale wtedy wyszukiwanie byłoby mało skuteczne (zwłaszcza wyszukiwanie wg kilku gatunków). Tak więc najlepiej jakby wszystko było w bazie i tam zapytaniem mozna było sobie wyciagnac liste z tytułami o podanych kryteriach. Tak wiec mam to przekazywac np.
- w postaci ciagu: 'Akcja, Dramat, Przygodowy' (tak mam obecnie w bazie)
- w postaci jakiś kodów np. '#01:#04:#23'
- czy może jakoś inaczej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Problem 2: Teraz w osobnej tabeli chciałbym dołączyć informacje o nośniku (np. DVD). Jest tam dość skompikowane wprowadzenie z formularza scieżki dźwiekowej (jest kilka ścieżek dźwiękowych w oryginalnym DVD). Chcąc je wszystki uwzględnić trzeba prowadzić dla POJEDYŃCZEJ ścieżki dźwiekwoej takie informacje jak rodzaj kodowania (DD 5.1, DD 2.0, DTS), a następnie język (Polski Lektor, Angielski). Na każdej płycie może być dowolna ilość ścieżek od 1 do 6. Jak to wprowadzać do bazy??
- Jako pełne nazwy w postaci ciągu np. 'DD 5.1 Angielski, DD 2.0 Polski Lektor'
- czy jakoś inaczej, może bardziej wydajniej?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Przedstawione przykłady to jakby tabela w tabeli tylko ze MySQL nie obsługuje pól jako tablice (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) A umieszcenie tego w osobnych wierszach nie ma sensu. Ma ktoś jakieś własne przemyślenia lub doświadczenia??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kitol
post
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


ID_Film i ID_gatunek nie mogą się powtarzac. Jedno ID_film odpowiada jednemu filmowi i inny film mnie może mieć tego samego. Podobnie z ID_gatunek. Powinieneś mieć 3 tabele:

  1. filmy:
  2. ID_film Nazwa inne kolumny
  3. 1        Forrest Gump
  4. 2        Powrót do przyszłości
  5. 3        Shrek
  6.  
  7. gatunki:
  8. ID_gatunek Gatunek
  9. 1               komedia
  10. 2               wojenny
  11. 3               historyczny
  12. 4               dramat
  13. 5               animowany
  14. 6               SF
  15.  
  16. oraz filmy_gatunki
  17. ID_film ID_gatunek
  18. 1         2
  19. 1         3
  20. 1         4
  21. 2         1
  22. 2         6
  23. 3         1
  24. 3         5


Masz tu relację n:n (wiele do wielu). Czyli jeden film może być zaliczany do wielu gatunków. I każdy gatunek może odpowiadać wielu filmom. Taką relację zapisuje się w 3 tabelach. Klucze główne ustawiasz tylko w tabelach filmy i gatunaki. Tabela je ł
cząca nie może mieć kluczy unikalnych, a jedynie zwykłe indeksy (by przyspieszyć
wyszukiwanie i sortowanie)

Ten post edytował kitol 3.02.2008, 16:23:43
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 11:11