On 2 Sie, 15:38, Ris <
robert.saj...@gmail.com> wrote:
> Witam,
> Powstał szkielet bazy danychhttp://
code.google.com/p/linuxadvices/wiki/BazaDanych
> jak opisałem w poście wcześniej, za utrzymywanie projektu a w tym
> tabel konkretne będą odpowiedzialni osoby przypisane do konkretnej
> części projektu. Mimo to zakładam ten wątek w celu dyskusji nad
> konkretnymi rozwiązaniami.
Witajcie,
Ja także mam uwagi do modelu bazy danych stworzonej przez Tomka:
1. Brakuje systemu uprawnień dla użytkowników. W funkcjonalnościach
zdefiniowano coś takiego jak stronę administracyjną projektu.
Proponuję stworzenie "profili" uprawnień na zasadzie 3 lub 4 tabel:
(każda z tabel posiada pole id)
profiles:
name, varchar(10), not null
description, text, null
permissions:
name, varchar(10), not null
description, text, null
profiles_permissions:
id_profile, int, not null
id_permission, int, not null
Jeśli użytkownik ma posiadać 1 profil uprawnień w serwisie to
poszerzamy tabelę User o pole - klucz wiążący z tabelą Profiles i
wtedy użytkownik może korzystać tylko z 1 zestawu uprawnień. Jeśli
jednak jeden użytkownik może korzystać z paru profili uprawnień
jednocześnie(temat pod dyskusję) to trzeba utworzyć dodatkową tabelę
wiążącą użytkownika z profilami (relacja jeden do wielu).
Osobiście sądzę że na sam początek 1 profil na użytkownika wystarczy -
pytanie czy będziemy to realizować przez to pole czy przez tablicę
relacji. Sądzę że bardziej przyszłościowe będzie to drugie rozwiązanie
(nie będzie trzeba modyfikować bazy danych).
2. Jeśli od samego początku chcemy budować w miarę optymalne
rozwiązania to pamiętajmy o dodatkowych kolumnach które mają służyć
jako cache. Myślę tu o wszelkiego rodzaju sumach, ilościach komentarzy
(które można przypisać do rady) etc. Ograniczmy narzut jaki może
spowodować np. obliczanie ilości komentarzy i zapisujmy tą ilość
podczas np. dodawania/usuwania komentarza do pola cacheującego.
3. Nie było to chyba omawiane ale czy nie sądzicie że w przypadku rad
przydałoby się coś takiego jak mechanizm wersjonowania rad ? Jest to
przydatne jeśli chcemy śledzić zmiany jakie zaszły w danej poradzie
(jeśli np. ma mieć do niej dostęp wielu użytkowników). W takim
przypadku przydałaby się dodatkowa tabela z kolejnymi wersjami rady.
Nie wiem czy warto robić coś takiego że moderator/założyciel danej
porady może zatwierdzać wersję która wyświetla się użytkownikowi
końcowemu.
4. Tabeli user brakuje 2 pól:
is_active (boolean) default false - Pole które odpowiada za aktywację
użytkownika w serwisie
is_blocked (boolean) default false - Pole które odpowiada za
blokowanie użytkownika
5. Trochę brakuje tej bazie aby spełniać podstawową
funkcjonalność.... Zmiany umieszczać w create.sql oraz nadpisywać plik
wygenerowany przez VP(Visual Paradigm) ? VP będzie obowiązującym
programem czy ustalamy że liczy się tylko to co znajduje się w
create.sql (a VP służy tylko do wizualizacji)?
Pozdrawiam