![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 574 Pomógł: 2 Dołączył: 13.04.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
chciałem się Was poradzić, w jaki sposób (najbardziej optymalny) można zaprojektować bazę z wersjami językowymi. Na dniach będę pisał serwis, gdzie będę musiał coś takiego zaprojektować. Pewnie to zależy od projektu i struktury klas czy modułów więc przedstawię mój punkt widzenia. Każdy moduł na mojej stronie (newsy, działy, sondy czy księga gości itp) to u mnie oddzielna klasa. W każdej tej klasie mam pole prywatne $sqlTable (lub więcej podobnych pól gdy trzeba tworzyc relacje między bazami), które przechowuje tabelę z danymi. Wpadłem na pomysł, gdzie przy przełączaniu języka ustawiana będzie sesja i na podstawie jej będę zmieniał tabele np. język angielki - $_SESSION['lang'] = 'en' -> tabela prefix_TABELA_LANG Teraz pytanie: czy takie rozwiązanie jest dobre (tworzenie oddzielnych baz na poszczególne wersje językowe)? Zastanawiałem się jeszcze nad tworzeniem dodatkowych pól w bazie na tekst dla wersji językowej. A może ktoś ma jeszcze lepsze rozwiązanie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Mnożenie tabel w zależności od wersji językowych to błąd.
Tracisz elastycznść, bo jak przyjdzie Ci dodać 3 języki to bedziesz miał kilka tabel, które przechowują dokładnie to samo, ale inaczej się nazywają. Jest to zabużenie relacyjności i normalizacji w bazie danych. Pomijam już to że czasem możesz chcieć wyciągnąć na przykład newsy, nie uzależniając ich od języka. Wtedy z ilu tabel wyciągniesz? Z dwóch, trzech, .... no właśnie. Nie wiadomoz ilu. Najlepszym rozwiązaniem jest tabela z językami, na przykład: languages id | shortCode | longCode | name A potem w każdej tebali, która ma być wersjonowana dajesz klucz obcy do tabeli languages, na przykład: articles id | languageId | title | content | ... Wtedy przeskakiwanie między językami jest banalne. Korzystasz nadal z tych samych tabel, zapytań.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 574 Pomógł: 2 Dołączył: 13.04.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
sprytne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dzięki, teraz już wiem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:46 |