Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Database ontwerp: welke optie is het best?

Anoniem
Remytje
17 antwoorden
  • Ik ben bezig een eigen CMS te schrijven en daarbij ben ik tegen een probleem opgelopen. Ik wil de site tweetalig maken en ik weet niet op welke manier ik dat het beste in de database kan verwerken.

    Het gaat hier om berichten met een titel, bericht, samenvatting, categorie enz… Ik weet zeker dat er in de toekomst geen taal bijkomt. Hoewel ik ernaar ga streven om alle berichten tweetalig te plaatsen zal dit niet altijd het geval zijn.

      [*:3af59795d2]Ik kan de berichten in zowel het Engels als het Nederlands in één tabel zetten, maar dan krijg ik dus 2 titelkolommen, 2 berichtkolommen enz. Daarnaast kan het zijn dat er bij een taal NULL ingevuld wordt omdat ik niets in die taal plaats. Het voordeel van deze methode is dat de posts dezelfde id krijgen waardoor het makkelijk wordt om naar de vertaling te linken.[*:3af59795d2]Ik kan natuurlijk ook een tabel maken met alleen id, auteur en datum. Vervolgens maak ik een 2 aparte (maar gelijke) tabellen met bericht, titel enz., voor elke taal één. Via een FK verwijs ik naar de eerstgenoemde tabel. Voordeel is dat het aantal NULL's beperkt wordt, maar ik vind de database zo wat onoverzichtelijk en eigenlijk zelfs onlogisch worden. (Of ligt dat gewoon aan mij?)[/list:o:3af59795d2]Graag jullie advies. - Bas
  • Kun je iets uitgebreider vertellen wat voor een soort berichten er op de site te lezen zijn?

    Moet ik het zien als 'nieuwsberichten'?

    Kun je ook even aangeven hoe je de opzet van je site ziet?

    Ik neem aan dat er eerst een overzicht van berichten is te zien, maar je ontkomt er haast niet aan om daarvoor al een onderscheidt te maken tussen de talen.
    Je kunt de site ook laten beginnen met een lijst van slechts Auteur en verschijningsdatum.

    Het hangt echt een beetje af van hoe je de gebruiker naar een bericht wilt lokken.

    Ik heb namelijk wel een idee en een oplossing, - en dat is zeker niet optie 1 - maar ga ik voor optie 2 maar dan wel iets anders.
  • Ik wil een soort weblog maken zoals Movable Type, maar dan anders. :D

    Op de homepage van de site zullen berichten komen te staan van de afgelopen [i:2f975973a5]x[/i:2f975973a5] dagen. Maar omdat ik soms lange stukken wil schrijven moeten deze niet helemaal op de homepage komen. Je ziet dus één of twee alinea's die de gebruiker nieuwsgierig moeten maken om naar het volledige artikel door te klikken. De volledige artikels staan in een archief gesorteerd op categorie.

    Je kunt het idd zien als een soort nieuwsberichten, maar deze zullen afgewisseld worden door "artikels" die ik zelf ga schrijven. (Of is het verstandiger om daar een aparte tabel van te maken en ernaar te linken vanuit de nieuwsberichten?)

    In principe kan er ook nog wel gesleuteld worden aan de opstelling van de site, want ik merk al bij het ontwerpen dat alles z'n voor- en nadelen heeft.

    - Bas
  • Moet je nog één vraag beantwoorden, dan kom ik met een voorstel.
    Op je weblog toon je berichten, maar ook artikels.
    Maar kunnen bezoekers ook op die berichten reageren?
  • Ja. :)

    - Bas
  • We gaan even je gegevens 'ontleden'

    Je hebt nodig:

    ID
    Taal
    Auteur
    Titel
    Categorie
    Korte Omschrijving
    Volledig_Artikel
    Datum

    Als je dit goed beschouwt hoort alles eigenlijk bij elkaar.
    Je kúnt het uit elkaar halen, maar dat levert geen enkele winst op.

    Het klinkt daarom misschien vreemd, maar ik zou het één tabel houden.

    Nu zul je zeggen dat je niet naar de vertaling kunt klikken, en dat klopt.
    Maar waarom zou je naar een vertaling moeten kunnen klikken. Immers, die vertaling moet eerst maar bestaan, en het is heel goed mogelijk dat dat niet het geval is.
    Daarnaast, waarom zou een Nederlander iets nogmaals willen lezen in het Engels, en nog sporadischer zal het voorkomen dat een Engelstalig iemand een Nederlandstalige tekst wil lezen.

    Denk er maar even over na, en vind je dit eigenlijk niets dan gaan we het anders aanpakken.
  • En hoe los je het dan op als er wel een Engelse, maar geen Nederlands vertaling is? Je zal tenslotte items moeten selecteren op hun taal (beter is weer een taalID natuurlijk ;)) (en op andere criteria zoals de datum of zo).

    Je zou kunnen zeggen: dikke pech, dan maar geen artikel, maar ik lees het dan liever in het Engels dan niet…
  • [quote:0764f970df]En hoe los je het dan op als er wel een Engelse, maar geen Nederlands vertaling is?[/quote:0764f970df]

    Pardon? Een artikel is in het Nederlands, Engels of beide.

    Ik neem maar even aan dat je eerst kiest in welke taal je de site wilt lezen. Staat een artikel niet op de NL site, dan zoek je op de Engelse.
    Staat daar ook niets, tja, dan bestaat ie niet….
  • Ja, daar heb ik dus ook nog een vraag over… Geven jullie de voorkeur aan een site zoals Gemal.dk of de traditionele manier?

    Op Gemal.dk wordt de taalvoorkeur uitgelezen uit de browser, en artikels worden vervolgens in die taal getoond. Bestaat het artikel niet in die taal, dan zie je het originele artikel (in dit geval in het Deens).

    Onder het traditionele systeem versta ik een site waarbij de de taal uit de URL wordt uitgelezen en dus ook alleen artikels in die taal toont. Meestal gaat dit gecombineerd met een "kies de gewenste taal"-pagina, compleet met vlaggen enzo…

    - Bas
  • Het mooiste is uiteraard dat je de website in je eigen taal krijgt, maar wat moet ik met een in het Deens geschreven artikel? Ik heb geen Deens in mijn 'pakket'. :lol:
  • Nee, maar als je bijvoorbeeld de PHP manual neemt, daar zijn de meeste functies wel vertaald naar het Nederlands, maar niet allemaal. En dan zie je die dus in het Engels…

    Je zou het probleem kunnen oplossen door bij het toevoegen van een nieuw item meteen de vertaling toe te voegen en als je dat dan niet doet om gewoon voor iedere taal die je hebt de orginele tekst in te voegen (dus als je geen Engelse vertaling hebt daar de Nederlandse tekst neerzetten).
    Of je vraagt alle items op onafhankelijk van de taal en gaat vervolgens kijken of een item beschikbaar is in de gewenste taal. Zo ja: tonen, zo nee: item in de "basistaal" openen…
  • Hmmm… Ik ga even over het een en ander nadenken, als ik een echt ontwerp heb kom ik hier terug om jullie goedkeuring te vragen.

    Alvast heel erg bedankt!

    - Bas
  • Je hebt één artikel.
    Het artikel kan geschreven zijn in één of meerdere talen.
    Men kan commentaar plaatsen op het artikel.
    [code:1:7c2427438b]
    Tabel TArtikel
    —————
    ArtikelID, CategorieId^, etc.

    Tabel TArtikelTaal
    ——————
    ArtikelTaalId, ArtikelId^, TaalId^, AuteurId^, Datum, Titel, Omschrijving, Artikel, etc.

    Tabel TCategorie
    —————-
    CategorieId, Categorie

    Tabel TTaal
    ———–
    TaalId, Taal

    Tabel TAuteur
    ————-
    AuteurId, Auteur

    Tabel TCommentaar
    —————–
    CommentaarId, Datum, E-mail, Naam, Omschrijving, etc.


    ^ = foreign key

    Commentaar kun je koppelen aan de tabel TArtikelTaal als je dit taalafhankelijk wilt opslaan. Als commentaar van de verschillende talen gemixed kunnen worden kun je gegevens uit de tabel TCommentaar koppelen aan de tabel TArtikel
    [/code:1:7c2427438b]
  • Wat ik wil is dus het volgende:

    [img:219fb1f07f]http://basje.com/temp/erd.gif[/img:219fb1f07f]

    Voor zover ik kan zien komt dit aardig overeen met wat h4xX0r heeft gegeven… Klopt dit? En belangrijker nog: is dit een handige opzet?

    [b:219fb1f07f]Edit:[/b:219fb1f07f] De posts zijn natuurlijk disjoint en niet overlapping zoals ik hier in het schema aangeef.

    - Bas
  • Ik zie geen plaatje hoor?!
  • [quote:e012b8e089="Wiep Corbier"]Ik zie geen plaatje hoor?![/quote:e012b8e089]Sorry, server was tijdelijk offline, kon ik helaas niets aan doen… :(

    - Bas
  • [quote:d492ef40cf="BasHamar"]Wat ik wil is dus het volgende:[/quote:d492ef40cf]
    Tuurlijk, wat jij wilt.
    [quote:d492ef40cf="BasHamar"]


    Voor zover ik kan zien komt dit aardig overeen met wat h4xX0r heeft gegeven… Klopt dit? En belangrijker nog: is dit een handige opzet?

    [b:d492ef40cf]Edit:[/b:d492ef40cf] De posts zijn natuurlijk disjoint en niet overlapping zoals ik hier in het schema aangeef.[/quote:d492ef40cf]
    Jouw schema impliceert:
    - Dat één persoon beide versies *moet* schrijven.

    Verder is hier niets mis mee.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.