Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projekt bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
0danio0
Witam,
Jako ćwiczenie zacząłem sobie robić projekt. Przypominać on może w uproszczeniu pewien serwis dla modelek itp (nie bedę podawać nazwy)

Co sobie założyłem w projekcie:
* użytkownicy + komentarze do profili
* użytkownik wybiera swoją profesje (na razie fotograf, model/modelka)
* użytkownik zostaje przydzielony do grupy (na razie możliwe grupy to admin, user, moderator)
* użytkownik może podać swoje dane, jeżeli jest to model/modelka to może ich podać więcej
* taki mechanizm prywatnych wiadomości
* czarnelisty
* newsy + komentarze do nich
* każdy użytkownik robi swoją galerię zdjęć, z podziałem na kategorie (podział ustalany przez admina)
* do każdego zdjęcia można dodawać komentarze

* komentarze mogą oddawać tylko zalogowani użytkownicy

Wiadomo na początku plan, model bazy danych. A baza prezentuje się tak:


bezpośredni link


Nie za bardzo jeszcze wiem czemu mam tyle kluczy dorobionych w tych tabelach  sciana.gif
Ale może do tego jakoś dojde  worriedsmiley.gif
Dlatego, że to jest pierwsza moja baza proszę o wytknięcie błędów, a takowych napewno jest peło...

Jeszcze mam kilka pytań:
1) stosować nazewnictwo PL czy ENG
2) stosować styl z _ czy CamelCase
3) zaczynanie nazwy nazwą tabeli ?
np. user_id czy samo id

Dziękuje za każdą odpowiedź
Pozdrawiam


sf
Cytat(0danio0 @ 16.10.2009, 18:55:28 ) *
Jeszcze mam kilka pytań:
1) stosować nazewnictwo PL czy ENG
2) stosować styl z _ czy CamelCase
3) zaczynanie nazwy nazwą tabeli ?
np. user_id czy samo id


To jest kwestia jak sobie kto założy, ważne by w jednym projekcie trzymać się wyznaczonego standardu i go nie zmieniać winksmiley.jpg Osobiście robię tak:

1) nazwy angielskie bo potem jak się robi pliki powiązane z bazą to głupio wygląda jak w całym systemie masz wszystkie pliki po angielsku, a nagle pojawiają się po polsku...
2) większość stosuje z _, ale ja lubię userId winksmiley.jpg companyId, podoba mi się takie nazewnictwo, stosuje je także w php więc trzymam się tej wersji
3) osobiście polecam stosować pełne nazwy, czyli user_id bo potem jak będziesz miał kilka left join to życzę powodzenia przy zwracaniu tych id ;P trzeba będzie stosować aliasy
thek
1) zależy od już przyjętego nazewnictwa. Jeśli to tylko na własne potrzeby to nie robi różnicy. Jeśli kod będą tylko Polacy oglądać to można polski (mimo wszystko angielski dla wielu to czarna magia, nawet programistów, zwłaszcza początkujących), ale najczęściej stosuje się angielski, by nazewnictwo było zrozumiałe nawet dla cudzoziemców.

2) Tu także swoboda z reguły panuje. Najważniejsze więc, by w całej aplikacji była jednolitość.

3) Z nazywaniem kolumn tabeli to już kwestia jak Ci wygodnie... Ja nie stosuję ich, ponieważ przy używaniu joinów aliasem jest zazwyczaj nazwa tabeli lub jej pierwsze litery, dlatego nigdy nie pomylę się czy ten id należy do tabeli temat czy forum f(orum).id, t(opic).id skutecznie wykluczą możliwość pomyłki. a stosowanie takich aliasów może wydłużyć nazwę do user.user_id. dublowanie stosuje się tylko gdy jest w tabeli kilka pozycji o tym samym lub podobnym nazewnictwie. Przykład to tabela choćby tematów forumowych masz tam id tematu, forum, ostatniego posta i autora i sensowne jest rozwiązanie tego jako id, forum_id, last_post_id, author_id (id, forumId, lastPostId, authorId). Jednak jak sam widzisz gd nastąpi łączenie poprzez pole idz tabelą choćby postów w temacie to zapytanie będzie wyglądać podczas łączenia jako:
  1. (...) FROM topic t JOIN posts p ON t.id = p.topic_id (...)
Jak widzisz trudno się pogubić co jest czym i stosowanie nadmiernie długich nazw kolumn jest zbyteczne.
0danio0
Dzięki za odpowiedzi  smile.gif

A co do samej bazy to rozumieć mam, że w miare dobrze jest zrobiona  rolleyes.gif Czy jednak tak nie jest ?

sf
Na pierwszy rzut oka wydaje się ok.
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.