Kom ihåg mig?
Home Menu

Menu


UTF-8 och mySQL

 
Ämnesverktyg Visningsalternativ
Oläst 2007-12-13, 20:00 #11
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Ursprungligen postat av tartareandesire
Det blir egentligen ingen redundans då man ändå vill ange språk på varje artikel på något vis. Det känns också ganska omständigt att behöva skapa en mängd nya kolumner eller tabeller varje gång man ska lägga till ett nytt språk?
Redundans var väl kanske fel term men det är ju lätt att se att om du måste lagra ENUM('en','sv') och frasen i en tabellen "innehåll" så har du en extra kolumn. Om du har en tabell som heter innehåll_sv och en som heter innehåll_en så slipper du en hel kolumn. Dessutom har du en logiskt mer klar struktur och om du har mycket information så blir den annars mer fragmenterad. Dessutom sker all läsning och skrivning till en tabell (en fil på disk) vilket kan vara en nackdel. Om du har indexerat så innehåller även index irrelevant information eftersom du normalt endast söker efter något på ett bestämt språk.

(Om du istället har en sida på fem språk med identiskt innehåll, du skulle lagra
id, språk1, text
id, språk2, text
id, språk3, text
id, språk4, text
id, språk5, text
medan jag istället lagrar
id, spr1text, spr2text, spr3text, spr4text, spr5text
det blir då enklare att söka efter saknade översättningar dessutom.)

Generella tabeller med olika beskrivningar för varje fält är inte alltid så effektivt, vilket bl.a. boken "The Art of SQL" tar upp (en utmärkt bok för att få ordning på strukturen och effektiviteten).

Att lägga till en tabell till är väl bland det enklaste man kan göra med sql? Lägga till columner är ju inte heller något större problem. Du måste ju hursomhelst anpassa skripten till att hantera flera språk. Det är ju enkel sak att lägga till en CMS-funktion för lägg till språk så har du det löst på en gång.

Jag kan inte se något annat att det mest logiskt riktiga och databasmässigt mest effektiva är att lagra separerat efter språk. Men du gör som du vill förstås. Jag använder själv gärna XML när det handlar om data som inte växer eller regelbundet förändras.

Citat:
Ursprungligen postat av tartareandesire
Vill man helt plötsligt ha turkisk sortering så vill man förmodligen ha det endast på det som är skrivet på turkiska och det går väl att lägga kollationering direkt i sorteringen i sql-satsen oavsett vilken kollationering som råder i tabellen?
Jag vet inte om det går att kollatera för sorteringen men det är knappast effektivare och vid sökningar med WHERE så måste du ju i alla fall i så fall konvertera till rätt collation innan du söker på värdet vilket är onödigt resurskrävande.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-13, 22:54 #12
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Okej, du vinner =) Det är bara det att när det gäller större sidor med mycket information så handlar det inte om att skapa en tabell för varje språk utan kanske 20 eller 30 vilket inte känns jättekul...
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-13, 23:01 #13
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by tartareandesire@Dec 13 2007, 23:54
Okej, du vinner =) Det är bara det att när det gäller större sidor med mycket information så handlar det inte om att skapa en tabell för varje språk utan kanske 20 eller 30 vilket inte känns jättekul...
Ja, det finns säkert tillfällen när min variant inte är optimal. Men jag föredrar snarare att ha informationen separerad även (eller kanske i synnerhet) om det gäller större sidor med många språk. Att ha trettio väl avgränsade tabeller är lättare att arbeta med än en hopgrötad tabell med all information i – men det är kanske en smaksak.

Och en lösning är ju inte alltid bäst för alla fall. Så du har säkerligen också rätt!… :P
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-13, 23:49 #14
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Vi har väl rätt bägge två då =) Blir lätt väldigt många tabeller, 20 objekt på 20 språk resulterar i 400 tabeller och även om det går att hantera blir det lite oöverskådligt. Ingen av våra lösningar är riktigt perfekt men antar att man är så illa tvungen att anpassa sig till verkligheten ibland.

Fler åsikter i frågan från andra mottages gärna.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-12-14, 17:56 #15
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by tartareandesire@Dec 14 2007, 00:49
Vi har väl rätt bägge två då =) Blir lätt väldigt många tabeller, 20 objekt på 20 språk resulterar i 400 tabeller och även om det går att hantera blir det lite oöverskådligt. Ingen av våra lösningar är riktigt perfekt men antar att man är så illa tvungen att anpassa sig till verkligheten ibland.
Jag borde egentligen sluta att tjata i den här tråden men…

Du har helt rätt i att det blir närmast ohållbart med 400 tabeller men vid ett sådant fall skulle jag nog inte komma på tanken att använda databaser. En långt bättre lösning är att ha en xml-fil för varje språk och sedan ha en xhtml-fil som hämtar sitt innehåll med XSL för varje språk (alla xml-filerna kan läggas i en mapp med samma namn som xhtml-filen för översiklighetens skull). På så sätt har du bara en enda xhtml-sida du behöver ändra i och en enda php-sida för hela siten (om du så önskar) som sköter XSLT. Sedan kan man enkelt göra en "editeringssida" och en "översättningssida" i CMS:et som kommer åt allt innehåll.

Jag tror det finns en annan ganska ny tråd om flerspråkiga sidor - men nu tror jag definitivt vi har avvikit lite väl långt från den här trådens tema…
martine är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 14:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017