[MySQL] twee- of meertalig

Pagina: 1
Acties:

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Stel, je hebt een database nodig, van van de inhoud hoofdzakelijk teksten zijn. En je wilt meer dan 1 taal ondersteunen.
Je hebt dan bijvoorbeeld nieuwsberichten met titel en inhoud als onderdeel van de inhoud.

Wat is nou beter:

Voor elke taal een aparte tabel maken, zoals nieuws_nl en nieuws_en

of

Voor elk taal-veld in de nieuws tabel twee of meer velden maken, zolas titel_en en titel_nl, en bericht_en en bericht_nl

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
drie tabellen?

nieuws:
------------
id
datum
bron

nederlands
------------
id
titel
bericht

engels
-----------
id
titel
bericht

sowiets?

edit: wat ook nog kan

die eerst tabel, en dan:

teksten
-----------
id
taal
titel
bericht

maar beide vind ik niet echt geweldig..

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op woensdag 22 mei 2002 20:39 schreef brammetje het volgende:
maar beide vind ik niet echt geweldig..
Het is ook een beetje vreemd eigenlijk wat je opslaat in je database. Op zich is het nl. 2 keer dezelfde informatie. Alleen is het elke keer in een andere taal opgeslagen. Als je het vanuit het oogpunt bekijkt dat je informatie niet dubbel wil opslaan, zal je waarschijnlijk nooit tevreden worden (of je moet tekst on-the-fly gaan vertalen van de ene naar de andere taal ;) )

verder kan je beter de 2e methode gebruiken die Bram aangeeft, omdat je hierdoor later makkelijk kan beslissen om een extra taal toe te voegen, zonder dat je een extra database hoeft aan te maken.

Maar misschien dat degene die de normalizatie stappen uit hun hoofd kunnen opzeggen er een andere kijk tegenaan hebben.

Verwijderd

teksten
-----------
id
taal
titel
bericht
Ik zou voor deze kiezen als in ieder geval een grote stap in de juiste richting. Het grote voordeel van deze manier van werken is dat het toevoegen van extra talen geen probleem is EN geen extra programmeerwerk (er verandert alleen de parameter 'taal'). Als je meerdere databases of meerdere tabellen hiervoor neemt moet je al snel per taal je queries gaan programmeren.

Tevens kun je als je deze constructie gebruikt redelijk eenvoudig (met een beetje fantasie waarschijnlijk nog wel in 1 query zelfs) een 'fallback' maken naar een 'default' taal wanneer er voor een stukje tekst geen gelokaliseerde versie beschikbaar is.

Microsoft heeft trouwens voor de meertalenondersteuning in windows ook gekozen voor deze aanpak; elke resource heeft zijn eigen taalcode en vanaf windows 2000 is het mogelijk het systeem aan de hand van de regionale instellingen de juiste taal te laten kiezen...

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 10:16
In het content-management-systeem waar ik aan werk schakelen we gewoon tussen twee databases voor de twee talen :) Erg dirty oplossing, maar dat hele CMS is sowieso al een rotzooi :)

https://niels.nu


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
code:
1
2
3
4
5
6
7
8
9
10
11
teksten
-----------
tekstid
taalid
titel
bericht

taal
-----------
taalid
taalnaam

Zo lijkt het me geen probleem :?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Glimi:
code:
1
2
3
4
5
6
7
8
9
10
teksten
-----------
tekstid
taalid
titel
bericht
taal  <------ Waar die dan nog goed voor is vraag ik me af ;)
-----------
taalid
taalnaam
idd, 't is toch echt een kwestie van normaliseren. Onderhoudbaarheid is op die manier optimaal.

Dat het aantal berichten per taal altijd evenveel is, is irrelevant voor het databaseontwerp.

Sterker nog, ik kan me situaties voorstellen waarbij je nieuwsberichten in de ene taal wel en in de andere niet wilt laten zien. Dat heb je daarmee ook meteen te pakken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je Nieuws en Teksten tabel is de betere oplossing.
Dit is het genormaliseerde ontwerp. Natuurlijk kan je ook een codetabel voor Taal maken, maar dat lijkt me logisch.
De id in teksten is nu een FK, ik zou 'm dan ook nieuws_id noemen. De combinatie (nieuws_id, taal) is de PK van de tabel Teksten.

PS. Mij is altijd geleerd de namen van tabellen in enkelvoud geschreven, dus Tekst ipv Teksten.
Pagina: 1