Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z tabelami
misiekmisiek1
post 20.03.2008, 23:19:21
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 20.03.2008

Ostrzeżenie: (0%)
-----


Witam
Mam problem ze stworzeniem struktury bazy danych. Baza ma być zaprojektowana tak aby byla mozliwosc dodawania wielu jezykow (nieogranizona ilość smile.gif ). Elementy bazy to: dyscyplina(nazwa) -> kraj(nazwa) -> liga(nazwa) -> druzyna(nazwa, opis, adres). Zrobiłem coś takiego:

druzyna
-id
-nazwa
-opis
-adres
-ligaid

liga
-id
-nazwa
-krajid

kraj
-id
-nazwa

kraje
-id
-krajid
-jezykid
-nazwa

jezyk
-id
-nazwa
-skrot

Z tej struktury tylko element kraju wydaje sie być dobrze zapisany. Ma ktoś może pomysł jak zaprojektować bazę dla wszystkich tych elementów? Prosze o odpowiedź, z góry dzięki
Go to the top of the page
+Quote Post
AxZx
post 21.03.2008, 00:09:09
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


jezyk: idjezyk | nazwa | skrot
liga: idliga | idkraj
liga_jezyk: idliga | idjezyk | nazwa

zeby pobrac dane z tabeli liga w jezyku o id = 1
  1. SELECT * FROM liga_jezyk LEFT JOIN liga ON liga.idliga = liga_jezyk.idliga WHERE idjezyk = 1


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
nevt
post 21.03.2008, 08:32:35
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


z ta nieograniczoną ilością bym nie przesadzał. typowe serwisy obsługują 2, 3 maks. 4 języki...
w takich zastosowaniach stosuję nieco inną konstrukcję (ze względu na prostotę budowy zapytań i uniknięcie zbędnych JOIN'ów).

w każdej tabeli, w której są pola wielojęzyczne, powielam te pola dodając przyrostek tak jak określenie domeny www (pl - polski, uk - angielski, de -niemiecki, itd.)
czyli na przykładzie twojej tabelki:
druzyna
-id
-nazwa
-opis_pl
-opis_uk
-opis_de
-adres_pl
-adres_uk
-adres_de
-ligaid

a potem w kodzie php:
  1. <?php
  2. $lng = 'pl'; // przykładowo
  3. $sql = "SELECT id, nazwa, opis_$lng AS opis, adres_$lng AS adres, ligaid FROM druzy
    na WHERE ..."
    ;
  4. ?>

i wtedy w wynikach odwołuję się do pól 'opis' i 'adres' i mam w nich dane w odpowiednim języku ...

co jest dość istotne w tym rozwiązaniu, obsługa kolejnego języka wymaga tylko dodania odpowiednich pól w bazie danych - kod PHP nie zmienia się...

Ten post edytował nevt 21.03.2008, 08:33:19


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
AxZx
post 21.03.2008, 10:12:10
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


slabe rozwiazanie gdy masz duzo tabel i chcesz dodac kolejny jezyk.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
nevt
post 21.03.2008, 10:23:33
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


Cytat
slabe rozwiazanie gdy masz duzo tabel i chcesz dodac kolejny jezyk.

heh... rozbawiłeś mnie... mam skrypt, całe 7 linijek, który przelatuje wskazaną bazę i dodaje / usuwa / zmienia wskazany język we wszystkich tabelkach. w bazie z 100 tabel wykonuje sie ok. 3 sekund. oj jak łatwo krytykować cudze rozwiązania nie przedstawiając wad własnych propozycji smile.gif weź swój przykład wstaw do większego zapytania, gdzie składasz i grupujesz dane z kilku tabel a zobaczysz jaki ci potworek wyjdzie. o wydajności i spójności danych już nie wspomnę. pozdrawiam.

Ten post edytował nevt 21.03.2008, 10:25:12


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
AxZx
post 21.03.2008, 11:26:55
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


no coz. niech autor tematu sam sobie wybierze rozwiazanie w zaleznosci od swoich potrzeb.


np title, description, keywords, content, title2, content2
dla 8 jezykow bedzie 6*8 = 48 kolumn + jeszcze inne kolumny z konfigiem to wychodzi ponad 50 kolumn
dobrze to rozumiem? mi sie wydaje ze tabele powinny byc zapelniane w dol a nie w bok.

Ten post edytował AxZx 21.03.2008, 11:40:39


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 05:35