forigi-cms – (002) – Baza danych MySQL

Od czego zacząć projektowanie cms’a? Myślę, że najlepiej będzie najpierw zadać sobie pytanie – jakie dane będę przechowywać.

Uproszczony model danych, które mnie interesują wygląda następująco:

  • kategorie + podkategorie,
  • tematy
  • tłumaczenia tematów (na wypadek tworzenia strony wielojęzycznej)
  • obrazy
  • filmy
  • aktualności

Póki co, moja relacyjna baza danych wygląda tak:

db

 

Każdy temat może mieć wiele kategorii a każda kategoria może mieć wiele tematów, zastosowałem więc relację typu wiele do wielu (m:n). Stąd pojawiała się tabela łącząca categories_to_topics. Ponadto tabelom images, videos, categories_to_topics ustawiłem klucze obce na kolumnach topic_id z opcją CASCADE na update i delete. Dzięki temu usunięcie tematu poskutkuje usunięciem przypisanych do niego mediów i kategorii. Tabela categories_to_topics ma również klucz obcy na kolumnie category_id i rekordy tej tabeli będą usuwana wraz z usunięciem rekordów tabeli categories.

Póki co tłumaczenia przewidziałem jedynie dla tabeli topics, jednak w dalszej kolejności, chcąc myśleć o stronach wielojęzycznych, należy zapewnić możliwość tłumaczenia również kategoriom i tekstom związanym z mediami – tytułom, podpisom i opisom.

Do projektowania baz danych MySQL polecam używać darmowe narzędzie MySQL Worbench, znacznie ułatwiające tworzenie kluczy.