Halihallo Frank0837
Ich möchte eine DB erstellen, in der ich z.B. in Gedichten nach Zitaten suchen kann. Die Art der Ausgabe sollte aussehen wie z.B. im Forumsarchiv: Fundstelle und benachbarte Textstrings. Dazu brauche ich den Textkörper, die Überschrift, ein Erstellungsjahr und den Namen des Autors etc.
Also, was für Informationen musst du verwalten?
- Fundstelle: Gedicht,Zeile
- Überschrift
- Erstellungsjahr
- Name des Autors
Man kann pro Gedicht eine Tabelle und dort je Zeile einen Satz anlegen. Dann hat man sehr bald einen unübersichtlichen Wust an Tabellen und vermutlich sehr lange Antwortzeiten, weil man in einer Schleife mit der Suche alle Tabellen durchlaufen muss. Diese Lösung fällt wohl aus.
Ja. Die Tabellen und Spalten sollten im optimalfall auf eh und jeh gleich bleiben, sodass
gar deine Kinder und Kindeskinder noch dasselbe Tabellenschema verwenden können. Es ist
Datenbanktechnisch gesehen ein Graus, wenn jeden Tag neue Tabellen hinzukommen; das ist
charakteristisch für ein schlecht durchdachtes Schema.
Also alle Gedichte in eine Tabelle: Es erhebt sich die Frage, wie man die Texte gegenseitig abgrenzt und wie man in dem jeweiligen Abschnitt der Tabelle die jeweils korrekten Verweise auf Titel, Jahr und Dichter setzt.
Nochmals von oben, du musst dir überlegen, welche Information du verwalten möchtest. Dann
fasst du Informationen zusammen, die auch irgendwie zusammenhängen und sich auf das
gleiche "Objekt" beziehen. Also:
Informationen sind:
- Gedicht
- Zeile vom Gedicht
- Überschrift
- Erstellungsjahr
- Name des Autors
Du hast also Gedichte als Ansammlung von Zeilen vorliegen, das gehört schon mal getrennt.
Sprich: Alle Infomationen zu Gedichten in die eine und alle Informationen zu
Gedichtzeile in die andere Tabelle. Dann haben wir noch Überschrift, die macht wohl in
der "Gedicht" Tabelle Sinn, Erstellungsjahr ebenso, und Name des Autors, naja, der
Einfachheit halber auch in die Gedicht-Tabelle (obwohl man dies spätestens dann Trennen
sollte, wenn du für einen Dichter mehrere Informationen speicherst, wie z. B.
Gebrutsjahr oder sowas).
Tabelle Gedicht:
gedicht_nummer jedes Gedicht bekommt intern eine Nummer zugewiesen
ueberschrift
erstellungs_jahr
name_des_autors
Tabelle GedichtZeile:
gedicht_nummer damit ist die Zeile dann mit einem bestimmten Gedicht "verbunden"
zeilen_nummer welche Zeile des Gedichtes, wird hier gespeichert?
zeilen_inhalt und das ist der Text, den du mit Fulltext-Search durchsuchen kannst
Wenn du nun einen Fulltext-Search machst, kannst du vom Resultat die zeilen_nummer und
die gedicht_nummer auslesen und anzeigen. Falls du auch die Texte "drum-herum" haben
willst, bräuchtest du einen zweiten Query, der z. B. 5 Linien bevor, bis 5 Linien danach
auswählt (oder dasselbe mit PHP simulieren).
Wenn es dir egal ist, in welcher Zeile der Text denn auch vorkommt, brauchst du die
GedichtZeile-Tabelle nicht, dann ginge auch ein Feld gedicht_inhalt in der Tabelle
Gedicht, welches du durchsuchst.
Viele Grüsse
Philipp