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.