Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Struktura bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
Arkon
Witam.
Muszę zaprojektować bazę która będzie w stanie przechowywać wiele artykułów tekstowych o różnej tematyce. Zakładam, że artykułów będzie bardzo dużo dlatego chciałbym zrobić to rozsądnie.
Wymyśliłem ze stworzę jedną tabelę:
arty(id, tresc, tytul, id_kategoria, id_grup ....)
id_kategoria to numer id kategorii którą jest artykuł(np. recenzja, opis, przepis, news itp)
id_grup to grupy tematyczne do których artykuł należy(np książka, film, komiks, medycyna)
Oczywiście kategorie i grupy to osobne tabele i myślę, że sobie z tym poradzę.

Zastanawiam się czy takie rozwiązanie jest dobre? Czy będzie wystarczająco wydajne. A może lepiej tworzyć osobną tabelę na każdą kategorię? Pewnie przy konkretnym zapytaniu byłoby wygodniej, ale czy przeszukiwanie bądź wyświetlanie większej ilości rekordów nie byłoby już kłopotliwe? Tworzenie osobnych tabel dla grup wydaje mi się głupi pomysłem bo przypuszczam że będzie ich dość sporo. Jakieś doświadczenia? Nabyta wiedza teoretyczna? Help! biggrin.gif

Podsumowując:
Ładować wszystko do jednej tabeli czy rodzielić to na kilka(np ze względu na kategorię)?
eS...
  1. arty
  2. +id
  3. +id_grupy
  4. +id_kategori
  5. +tytul
  6. +tresc
  7. +DATA
  8.  
  9. grupy
  10. +id
  11. +nazwa
  12.  
  13. kategorie
  14. +id
  15. +nazwa

tak mi sie wydaje, ze grupy (id,nazwa) i kategorie (id,nazwa) powinny byc osobno zeby juz nie ladowac w tabele 'arty'. chyba ze nazwa np. kategori bedzie pobierana na takiej zasadzie
jeseli id_kategori=0 to nazwa=sport
w takim wypadku dal bym to do jednej tabeli smile.gif
Arkon
Moj problem polega jednak na tym czy nie rozdzielić tabeli arty na kilka i zamiast
  1. arty
  2. +id
  3. +id_grupy
  4. +id_kategori
  5. +tytul
  6. +tresc
  7. +DATA
  8.  
  9. grupy
  10. +id
  11. +nazwa
  12.  
  13. kategorie
  14. +id
  15. +nazwa

zrobic
  1. arty_komiks
  2. +id
  3. +id_grupy
  4. +id_kategori
  5. +tytul
  6. +tresc
  7. +DATA
  8.  
  9. arty_ksiazka
  10. +id
  11. +id_grupy
  12. +id_kategori
  13. +tytul
  14. +tresc
  15. +DATA
  16.  
  17. arty_film
  18. +id
  19. +id_grupy
  20. +id_kategori
  21. +tytul
  22. +tresc
  23. +DATA
  24.  
  25. grupy
  26. +id
  27. +nazwa


Czy takie rozwiązanie przy dużej ilości rekordów nie odciąży DB. A może właśnie ze względu na konieczność tworzenia złożonych zapytań jeszcze bardziej ją obciąży?
mike
Rozwiązanie złe.
Dlaczego?
1. Po co rozdzielać elementy po różnych tabelach skoro mają taką samą budowę;
2. Jak będziesz chciał wybrać/wyszukiwać wśród wszystkich artach? Zamiast jednego zapytania masz tyle ile natworzysz tabel;
3. Możesz dodać jakieś pole do tabeli z artami, które mówi czy art jest o książkach czy o czymś innym i masz już podział, do którego wcale nie potrzebujesz wielu tablel.
Arkon
Ok czyli tak jak myslalem na poczatku. Dzięki bardzo za pomoc!
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.