logischer aufbau
ole
- datenbank
0 Cheatah0 Cruz0 Cheatah0 Cheatah0 ole0 Michael Schröpl
0 Michael Schröpl
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:
-tabellen: Deutsch
Englisch
-seite 1
-seite 2 etc.
-tabellen: seite 1
seite 2
-englisch
-deutsch
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-)>
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...
- eine datenbank mit verschiedenen tabellen die jeweils die inhalte in den verschiedenen sprachen beinhalten
- eine datenbank mit verschiedenen tabellen die jeweils die einzelnen seiten enthalten in allen sprachen
- mehrere datenbanken in den einzelnen sprachen
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"
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.
- 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.
- 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.
- 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
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
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
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-)>
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.
hi und guten morgen
habt mir alle sehr geholfen und viele wirrungen in meinen gedankengängen glösst.
alles liebe
ole
(8-)>
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ß.
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?