malesja
23.07.2009, 20:45:04
Mam pytanie dotyczące projektowania bazy danych: jaki projektować i jaki silnik powinienem wybrać?
Tzn.: MyISAM czy InnoDB
W bazie będę miał:
Tabele z rejestracją użytkowników (Imię, nazwisko, login, hasło, e-mail, konto_aktywowane(0,1))
Tabele z profilem, który każdy będzie mógł wypełnić po rejestracji o bardziej szczegółowe dane.
Inne tabele przechowujące dane, które będą uzupełniać użytkownicy.
Cześć serwisu będzie tak skonstruowana, iż po zalogowaniu system musi wiedzieć, z kim ma do czynienia i np. przy wypełnianiu profilu poprawnie dopisywać dane do tabeli z profilem danej osoby.
Jakieś relacje muszą tu chyba być. Wszystkie tabele muszą być jakoś ze sobą powiązane, bo będą rzeczy, że jedna tabela będzie się odwoływać do innej w celu pobrania dodatkowych danych w celu wyświetlenia danych z jednej i drugiejtabeli na stronie www.
Możecie mi coś napisać, jaki ten typ silnika zastosować. Myślę, że może trzeba będzie wykorzystać oprócz kluczy podstawowych klucze obce. Ale to wtedy tylko InnoDB. Jak przeglądałem bazę Joomla to żadnych tam relacji nie widziałem. Wczytałem strukturę CMSa do MySQL Workbench, ale tam żadnych powiązań nie było.
Nie wiem jak się zabrać za ten projekt żebym potem nie poprawiał go a żeby mi wszystko sprawnie funkcjonowało. Możecie coś doradzić? Napiszcie, jakiego silnika Wy używacie i jak projektujecie relacje? z wykorzystaniem kluczy i tabel pomocniczych może?
Z góry dzięki
maly_swd
23.07.2009, 21:00:28
Do tego co potrzebujesz wystarczy Ci MyIsam.
Relacje robisz przez JOINY i to ty decydujesz co sie laczy z czym;)
malesja
23.07.2009, 21:12:26
Oj nie wiem czy to mi tylko wystarczy.
Weżmy taki przykład dany użytkownik się rejestruje i jego dane lądują w tabeli 'uzytkownicy' , ale jak wypełnia swój profil np. o skończoną szkołę, a potem jeszcze raz ten sam profil o skończoną szkołę tylko już drugą dwa fakultety to jak system, który będzie miał potem w jego profilu wyświetlić mu te dane albo np. poprzez osoby, które będą chciały ten profil oblukać system ma zidentyfikować Jasia Kowalskiego, który ma 2 typy ukończonych szkół w tabeli ze swoim profilem? Coś jak w naszej-klasie.
Ja myśałbym tak:
tabela uzytkownicy klucz podstawowy ID
tabela profile
klucz podstawowy plus klucz pomozniczy z tabeli uzytkownicy, ale to relacja jede do jeden, a przecież Jaś Kowalski mógł skończyć wiele szkół. Tworzyć tabelę pomocniczą z kluczem z tabeli uzytkownicy i tabeli profile?
maly_swd
23.07.2009, 21:56:51
poczytaj o bazach danych.... kazda oferuje to co chcesz osiagnac...
MyIsam - taz daje Ci to co chcesz... Tylko podstawa, dobrze zaprojektowac baze
patryczakowy
23.07.2009, 22:20:20
InnoDB oferuje ci relację w pełnym tego słowa znaczeniu myisam nie w tym drugim przypadku sam musisz zadbać o spójność danych. Korzystając z InnoDB i dobrze projektując bazę danych możesz sobie życie ułatwić jednak trzeba pamiętac że InnoDB jest wolniejsze od myisam
malesja
24.07.2009, 22:15:35
Cytat(patryczakowy @ 23.07.2009, 23:20:20 )

InnoDB oferuje ci relację w pełnym tego słowa znaczeniu myisam nie w tym drugim przypadku sam musisz zadbać o spójność danych. Korzystając z InnoDB i dobrze projektując bazę danych możesz sobie życie ułatwić jednak trzeba pamiętac że InnoDB jest wolniejsze od myisam
InnoDB mama rozumieć relacje, że w jakiejś tabeli oprócz kluczy glównych będą klucze pomocnicze odwołujące się na jakąś inną tabelę, w której ten sam klucz pomocniczy pełni już rolę klucza głównego w swojej glównej tabeli, a w MySQL korzystając z MyISAM jak się tworzy te relacje - jak zadbać o spójnośc danych?
erix
24.07.2009, 22:36:09
Możesz albo blokować zapis do tabeli i wykonywać co operację zapytania, albo skorzystać z triggerów.
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.