• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbankstruktur- Was ist hier das Optimum?

Degers

Mitglied
Hallo,

Für eine neu gestartete Website (siehe Websitecheck) möchte ich nun auch deklinierte Adjektive im Kroatischen anbieten. Daher stellte ich erste Überlegungen zur Datenbankstruktur an, wo mir keine wirklich gute Lösung einfällt. Es sei sicherheitshalber noch erwähnt, dass es sich um eine MySQL-Datenbank handelt.

Mit allen Genera, Numerus und Kasus (im Kroatischem sieben und nicht vier wie im Deutschen) kommt es allein bei den Deklinationsn schon auf 42 Varianten pro Adjektiv. Nimmt man noch ander Belange wie ein Timestamp des Eintrags, den letzten Bearbeiter, die Verknüpfung zur Vokabel, gilt es an die 45 Infos in einem Datensatz unterzubringen.
Das wäre für eine Tabelle zweifellos zu viel. Wonach trenne ich hier optimal? Metainformationen wie Bearbeiter, Timestamp etc seperat? Die beste Lösung ist meiner derzeitigen Einschätzung nach eine Auftrennung nach Kasus, also sieben Tabellen plus ggf. eine Metainformationstabelle. Daher 6 bzw. mit Verknüpfung sieben Spalten pro Tabelle.
Für andere Vorschläge bin ich aber sehr offen, da mir diese Konstellation reichlich suboptimal erscheint.
 
Werbung:
Hmpf... Mal eben so aus dem Ärmel wird das wohl nix, zumal ich/wir des Kroatischen nicht mächtig sind.

Grundtabelle
AdjektivID | Infinitiv-Form des Adjektivs

Menge
MengenID | Singular
MengenID | Plural

Falltabelle
ID | Fall | AdjektivID | MengenID | Inhalt
ID | Fall | AdjektivID | MengenID | Inhalt


Dann kommen noch solche Dinge wie mit/Ohne Artikel etc...

Ich würde das auf mehrere Tabellen aufteilen, damit eine detaillierte Suche erleichtert wird. Du hast zwar mehr Arbeit beim erstellen der Queries, aber du bekommst schneller deine Ergebnisse. Dabei würde ich in diesem Fall (meine Grammatik-Kenntnisse mal in den Hintergrund ;-) ) vielleicht sogar eine gewisse Redundanz in Kauf nehmen.

Bei mir scheitert es definitiv schon an den Grammatikkenntinissen um alle Eventualitäten abschätzen zu können.
Mich würden aber 50 Tabellen auch nicht schrecken....
 
Die Grundform ist glücklicherweise mit der Haupttabelle bereits abgefrühstückt. Dementsprechend habe ich eine ID und eine Grundform bereits vorliegen, die Zusätze wären dan eben über die voc_id zu Verknüpfen.
Damit die Varianten bildhafter werden, hier wäre es an einem Beispiel aufgezeigt, welche Varianten es gibt:
Kroatische Grammatik - Adjektive
Es gibt stets alle Varianten.
Dhttp://crovoc.de/grammar?title=adjektivea die Unterteilung des Kasus den größten Schnitt mach, also in sieben Teile, scheint das auf jeden Fall schonmal eine sinnvolle Maßnahme zu sein. Erwähnenswert ist vielleicht noch, dass das Ganze nicht einfach nur ausgegegeben, sondern die einzelnen Einträge in interaktiven Übungen genutzt werden, daher in der Tat schnell abrufbar sein sollten.
 
Werbung:
Es ist sicher nicht sinnvoll jedes Wort in allen Formen abzuspeichern. Ich glaube du willst ein Wörterbuch programmieren. Dazu brauchst du eine Rechtschreibprüfung (spell checker)
 
Also wenn sich die Deklination nur durch die Änderung der Endung ergibt und du die Grundform auslesen kannst und zudem die Endungen immer regelmässig sind und wenn es wie in deiner Tabelle 42 Formen gibt, dann würde ich die nicht in einer Tabelle ablegen sondern als Array in einer config.inc-Datei oder ähnlich, dauerhaft speichern und dann inkludieren.
Das geht jedoch nur, wenn die Endungen tatsächlich keine Ausnahmen haben.
Sollte es Ausnahmen von der Regel geben, brauchst du somit lediglich eine Ausnahmetabelle.

Übrigens um bei deinem Beispiel von deiner Seite zu bleiben. Du sagst dort das gute Buch. Gut heist dobrar, aus deinem Beispiel, wenn ich aber gut eingebe und danach suche kommt dobar heraus. Nur ein Schreibfehler?

und was ist die Grundform von
staristaristarastarestarostara

Konnte nicht danach suchen.

Im deutschen ist es, glaube ich, auch so dass immer die Endungen verändert werden.

gut, gute, gutes, guten, gutem
grün, grüne, grünes, grünen, grünem

Endungsmöglichkeiten; kein, e, es, en, em
Gebildet aus Infinitiv plus Endung
 
Ja, unter Anderem ist CroVoc auch ein Wörterbuch, keine Frage. Den Zusammenhang mit einer Rechtschreibprüfung versteh ich jetzt nicht, sorry...
Es gibt Ausnahmen. Daraus entsteht auch das Problem deiner Suche. Aufgrund eben dieser zahlreicher Ausnahmen, wollen wir, neben der Verbkonjugation auch noch eine Adjektivdeklination anbieten. Die Grundform ist dass, was man zu Grundform macht. In der Regel ist es Nominativ Maskulinum Singular. Gebildet werden die unterschiedlichen Formen jedoch nicht aus dieser Form und der Endung, sondern aus dem Stamm und der Endung. Leider gibt es keinen Infinitiv bei Adjektiven, so eindeutig gibt es den nur bei Verben. Leider! :D
Speichern in einer Datei habe ich bisher nur sehr selten gemacht, da ich mir die Administration dieser Datei über das Backend recht schwierig umzusetzen vorstelle. Arrays in der Datenbank speichern wäre ja ein guter Mittelweg. :D

Danke auf jeden Fall schonmal für die Anregungen, so haben wir einige Alternativen zur Hand.
 
Werbung:
Ja, unter Anderem ist CroVoc auch ein Wörterbuch, keine Frage. Den Zusammenhang mit einer Rechtschreibprüfung versteh ich jetzt nicht, sorry...
Ein Wörterbuch oder eine Rechschreibprüfung, speichert nicht jedes denkbar mögliche Wort ab, sondern nur die Grundformenen und die Regeln die existieren. Sowas dürfte es für fast alle Sprachen geben. Der Aufwand jedes Wort in jeder erdenklichen Deklaration zu speichern dürfte weitaus größer sein.
 
Ja, die Funktion dafür ist sogar schon geschrieben, auch wenn sie gedacht war, die Eintragungen in die Datenbank zu machen. Einziges Hindernis sind die Ausnahmen. Allerdings lassen sich die Ausnahmen ja schonmal wesentlich ressourcensparender festhalten, gegenprüfen, und dann einen regelmäßígen Fall ausgeben oder eben die eingetragene Unregelmäßigkeit.
 
Zurück
Oben