ole: logischer aufbau

hallo und guten morgen :-)

ich schau mal in meine kaffetasse...genau 7:30 uhr

ich muss eine datenbank aufbauen (bis hierher ja noch kein problem :-)). meine frage nun an euch, wie gehe ich dabei logisch vor?

ziel ist es sehr viele seiten in verschiedenen sprachen anzubieten.

meine überlegungen:

  1. eine datenbank mit verschiedenen tabellen die jeweils die inhalte in den verschiedenen sprachen beinhalten
    Bsp.:
    datenbank: sprachen

-tabellen: Deutsch
            Englisch
                
                 -seite 1
                 -seite 2 etc.

  1. eine datenbank mit verschiedenen tabellen die jeweils die einzelnen seiten enthalten in allen sprachen
    Bsp:
    datenbank:sprachen

-tabellen: seite 1
            seite 2
                
                 -englisch
                 -deutsch

  1. mehrere datenbanken in den einzelnen sprachen
    Bsp:
    datenbank:englisch
    -tabellen: seite 1
                seite 2 etc.

so weit was mit zu diesem thema eingefallen ist. was ist sinnig? was lässt sich leicht pflegen? gibt es alternativen?

alles liebe und vielen dank im vorraus
ole
(8-)>

  1. Hi,

    ich schau mal in meine kaffetasse...genau 7:30 uhr

    meine Kaffeetasse scheint nachzugehen... 9:25 Uhr :-)

    ich muss eine datenbank aufbauen (bis hierher ja noch kein problem :-)). meine frage nun an euch, wie gehe ich dabei logisch vor?

    Oh je. Datenbanken sind zwar alles andere als mein Spezialgebiet, aber eins weiß ich: über solche Problemchen kann man Doktorarbeiten verfassen.

    Mir sitzt hier gegenüber übrigens ein Doktor, der als Datenbankspezialist eingestellt wurde...

    1. eine datenbank mit verschiedenen tabellen die jeweils die inhalte in den verschiedenen sprachen beinhalten
    2. eine datenbank mit verschiedenen tabellen die jeweils die einzelnen seiten enthalten in allen sprachen
    3. mehrere datenbanken in den einzelnen sprachen
    1. eine Datenbank mit einer Tabelle, die die Sprache als weitere Spalte beinhaltet:

    Tabelle --+-- Seite 1 -- deutsch
              +-- Seite 1 -- englisch
              +-- Seite 2 -- deutsch
              +-- Seite 2 -- englisch

    Dazu würde ich jedenfalls aufgrund meiner zwar minimalen, aber zumindest vorhandenen Erfahrung tendieren :-)

    Cheatah, select Inhalt from Tabelle where Seite = "Seite 1" and Sprache = "englisch"

  2. Hallo OLE,

    generelle Faustregel bei Datenbanken:
    Je kleiner du die Einheiten (Tabellen) machst, umso schneller wird die Suche, aber umso komplizierter ist die Pflege. Die Befehle, die nötig sind um deinen gesuchten Datensatz zu finden werden dabei nur geringfügig komplizierter.

    Also..die einfachste Struktur wäre, wie es Cheatah schon gesagt hat, einfach nur alles in eine Tabelle zu legen, mit verschiedenen Spalten für die verschiedenen Sprachen. Somit kriegst du alles mit einem einfachem Befehl und die Pfelge ist auch ganz einfach. Allerdings muss dabei eine wesentlich größere Datenmenge durchsucht werden, also ist diese Version die langsamste.

    1. eine datenbank mit verschiedenen tabellen die jeweils die inhalte in den verschiedenen sprachen beinhalten

    Diese Struktur finde ich persönlich am besten. Die Komplexität (gibt es das wort überhaupt?) besteht lediglich darin die richtige Tabelle anzusprechen, dürfte ja nicht allzu kompliziert sein 2 Sprachen zu unterscheiden ;), und es muss nur noch die Hälfte der Datenmenge durchsucht werden. Die Pflege ist auch super einfach.

    1. eine datenbank mit verschiedenen tabellen die jeweils die einzelnen seiten enthalten in allen sprachen

    Diese Lösung ist noch viel schneller. Allerdings leidet die Pflege und die Handhabung ein wenig, es muss schon jemand sein, der sich ein bisschen mit den Seiten auskennt, oder sich eine Weile in die Materie einarbeitet.

    1. mehrere datenbanken in den einzelnen sprachen

    Mehrere Datenbanken macht grundsätzlich kein Sinn. Eine Datenbank mit vielen Tabellen ist das selbe, wie viele Datenbanken mit einer Tabelle. Allerdings gibt es dann mehrere Logins, und es braucht auch mehr Speicherplatz.

    Du könntest ja noch so weit gehen, daß es für jede Seite eine Tabelle in jeder Sprache gibt. Das macht die Sache noch schneller, kompliziert aber wieder die Handhabung und die Pflege.

    Gruß
    Cruz

    1. Hi,

      Also..die einfachste Struktur wäre, wie es Cheatah schon gesagt hat, einfach nur alles in eine Tabelle zu legen, mit verschiedenen Spalten für die verschiedenen Sprachen.

      eigentlich meinte ich ja eine zusätzliche Spalte, die die Sprachinformation enthält (bei zwei Sprachen reicht ggf. Boolean), und trotzdem zwei Zeilen für ein Dokument in zwei Sprachen...

      Wie man sieht, der Möglichkeiten gibt es viele :-)

      Cheatah

      1. Hi,

        noch ein kleiner Zusatz:

        eigentlich meinte ich ja eine zusätzliche Spalte, die die Sprachinformation enthält (bei zwei Sprachen reicht ggf. Boolean), und trotzdem zwei Zeilen für ein Dokument in zwei Sprachen...

        Dieser Variante stimmt Dr. Schneider, Datenbankspezialist der WEB.DE AG Karlsruhe (der mir übrigens zufällig gegenüber sitzt *g*), zu. Eine Spalte für die Dokument-ID, eine Spalte für die Sprachbezeichnung, eine Spalte für den Dokumenteninhalt. Das ist sehr leicht wartbar, schnell, und nicht zuletzt auf weitere Sprachen leicht erweiterbar.

        Cheatah

        1. hi cheatah,

          wenn ich dich richtig verstanden habe also so:

          datenbank

          Tabelle
          spalte 1   spalte 2   spalte 3
          seite 1    deutsch    content
          seite 1    englisch   content

          seite 1 bekommt die id 1
          deutsch die id de
          englisch die id en
          usw.

          korrekt?

          ole
          (8-)>

          1. Tabelle
            spalte 1   spalte 2   spalte 3
            seite 1    deutsch    content
            seite 1    englisch   content
            seite 1 bekommt die id 1
            deutsch die id de
            englisch die id en
            usw.

            Genau so.

            Wie Du den Wert "deutsch" intern darstellst, das ist
            Deine Sache. (Du könntest z. B. das Länderkennzeichen
            "de" nehmen, und über eine zweite Tabelle die Abbildung
            "de" -> "deutsch" vornehmen, falls Du diese Zeichenkette
            extern darstellen können mußt).

            Deine Tabelle realisiert eine Abbildung (Relation) von

            Seitennummer  X  Sprache  ->  Dokumentinhalt.

            Das Paar aus (Seitennummer, Sprache) ist dabei der
            *Schlüssel* eines jeden Dokuments.

            Und diese Abbildung ist eine 1:1-Abbildung (zu jedem
            Schlüssel existiert genau ein Dokument).
            Das heißt, daß in Deinem Fall das Schlüsselpaar jeweils
            keine Werteduplikate zulassen sollte. Hierfür gibt es
            das Konzept des *Primärschlüssels*: Wenn Du das Paar aus
            den beiden Schlüsselwerten als solchen deklarierst, dann
            sorgt die Datenbank automatisch dafür, daß Werte in
            diesen Feldern (in der Kombination) immer eindeutig
            sein werden.

            Das Verstehen, welche Objekte vorliegen und in welcher
            Art von Beziehung sie zueinander stehen (1:1, 1:n, m:n),
            ist die Grundlage des Datenbankentwurfs. Erst danach
            sollte eine Umsetzung in konkrete Tabellen erfolgen.

            1. hi und guten morgen

              habt mir alle sehr geholfen und viele wirrungen in meinen gedankengängen glösst.

              alles liebe
              ole
              (8-)>

        2. eigentlich meinte ich ja eine zusätzliche Spalte, die die Sprachinformation enthält (bei zwei Sprachen reicht ggf. Boolean), und trotzdem zwei Zeilen für ein Dokument in zwei Sprachen...
          Dieser Variante stimmt Dr. Schneider, Datenbankspezialist der WEB.DE AG Karlsruhe (der mir übrigens zufällig gegenüber sitzt *g*), zu. Eine Spalte für die Dokument-ID, eine Spalte für die Sprachbezeichnung, eine Spalte für den Dokumenteninhalt. Das ist sehr leicht wartbar, schnell, und nicht zuletzt auf weitere Sprachen leicht erweiterbar.

          ... und gleichzeitig läßt sich über Views sehr elegant die Menge aller Dokumente einer Sprache herausprojezieren, so daß man diese Menge syntaktisch wie eine Tabelle ansprechen kann und von den anderen Sprachen gar nichts mitbekommen muß.

  3. ich muss eine datenbank aufbauen (bis hierher ja noch kein problem :-)). meine frage nun an euch, wie gehe ich dabei logisch vor?
    ziel ist es sehr viele seiten in verschiedenen sprachen anzubieten.

    Ich stimme Deinen Überlegungen im Wesentlichen zu,
    aber deine Aufgabenstellung erklärt mir bisher nicht,
    wofür es eine Datenbank sein muß (alles, was Du bisher
    gefordert hat, geht auch mit einer normalen Verzeichnis-
    struktur).

    Entscheidend für den Einsatz einer Datenbank ist m. E.
    die Menge der Operationen, die auf den Daten durchgeführt
    werden sollen. Eine *richtige* Datenbank zu betreiben
    ist ein Haufen Arbeit - und eine, die diesen Namen nicht
    verdient, ist ein Haufen Ärger, weil immer alle in SQL
    definierten wundertollen Anweisungen genau bei *dieser*
    Datenbank dann nicht funktionieren.

    Steht denn das zu verwendende RDBMS bereits fest?