0 follower

Ogólna koncepcja

Biorąc pod uwagę analizę wymagań, zidentyfikowaliśmy potrzebę posiadania w naszej aplikacji czterech tabel bazodanowych, przechowujących informacje o: użytkowniku User, wiadomościach Post, komentarzach Comment oraz otagowaniu Tag:

  • Tabela User przechowuje informacje o użytkownikach, włączając w to ich nazwy oraz hasła.
  • Table Post przechowuje informacje o wiadomościach. Składa się ona przede wszystkim z następujących kolumn:
    • title (tytuł): wymagany, tytuł wiadomości;
    • content (zawartość): wymagana, zawartość treści wiadomości, zapisana w formacie Markdown;
    • status (status): wymagany, status wiadomości, który może przyjmować następujące wartości:
      • draft (wersja robocza): wiadomość znajduje się w wersji roboczej i nie jest widoczna publicznie;
      • published (opublikowana): wiadomość jest upubliczniona;
      • archived (zarchiwizowana): wiadomość jest przedawniona i nie jest widoczna publicznie.
    • tags (otagowanie): opcjonalne, lista rozdzielonych przecinkami słów, kategoryzujących wiadomość.
  • Tabela Comment przechowuje informacje o komentarzach do wiadomości. Każdy komentarz jest powiązany z postem i przede wszystkim zawiera następujące kolumny:

    • name (nazwa): wymagana, nazwa autora komentarza;
    • email (email): wymagany, e-mail autora komentarza;
    • website (strona WWW): opcjonalna, strona WWW autora komentarza;
    • content (zawartość): wymagana, zawartość komentarza zapisanego przy pomocy formatu Markdown.

    • status (status): wymagany, status komentarza determinujący czy komentarz został zatwierdzony (wartość 1) lub nie (wartość 0).

  • Tabela Tag (otagowanie) zawiera informację o tagach wiadomości. Każda wiadomość może posiadać wiele tagów, ale także każdy tag może być przypisany do wielu wiadomości. Tabela Tag jest używana przede wszystkim przez portlet chmurki tagów, który potrzebuje obliczyć jak często używany jest każdy z tagów.

Następujący diagram (ER) relacji encji (ang. entity-relation diagram), pokazuje strukturę oraz relacje dla wyżej opisanych tabel. Zauważ, że relacja pomiędzy tabelami Post oraz Tag to wiele-do-wielu. Tabela PostTag służy do rozbicia tej relacji na dwie relacje jeden-do-wielu.

Diagram relacji encji dla bazy danych blogu

Diagram relacji encji dla bazy danych blogu

Wszystkie wyrażenia SQL, odpowiadające powyższemu diagramowi ER, można znaleźć w demonstracyjnym blogu. Dla naszej instalacji Yii, można je odnaleźć w pliku /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql.

Proces tworzenia naszej aplikacji podzieliliśmy na następujące kamienie milowe.

  • 1-szy kamień milowy: tworzenie prototypu sytemu blog, który powinien zawierać większość z wymaganych funkcjonalności.
  • 2-gi kamień milowy: dopracowywanie zarządzania wiadomościami obejmujące tworzenie, listowanie, wyświetlanie, aktualizowanie oraz usuwanie wiadomości.
  • 3-ci kamień milowy: dopracowywanie zarządzania komentarzami obejmujące tworzenie, listowanie, zatwierdzanie, aktualizowanie oraz usuwanie komentarzy do wiadomości.
  • 4-ty kamień milowy: implementacja portletów, zawierających menu użytkownika, logowanie, chmurkę tagów oraz najnowsze komentarze.
  • 5-ty kamień milowy: końcowe dopracowywanie aplikacji oraz jej uruchomienie.