Stichwortverzeichnis anlegen
Moderator: Moderatoren
Stichwortverzeichnis anlegen
Hallo,
ich bin ein ziemlicher Anfänger mit Datenbanken. Ich möchte für Bücher eines Fachbereiches (Yoga) ein Stichwortverzeichnis erstellen.
Das soll dann so funktionieren: Ich gebe ein Suchwort ein und erhalte als Ausgabe alle Buchtitel, das dazugehörige Kapitel und ggf. das Unterkapitel, wo überall dieses Suchwort auftaucht.
Ich muss also eine Tabelle mit allen Buchtiteln anlegen, dann für jeweils ein Buch eine Tabelle mit allen Kapiteln (für das nächste Buch ebenso) und dann ggf. für ein Kapitel eine Tabelle mit den Unterkapiteln (und das dann bei jedem Buch). Sodann eine Tabelle, in der alle Suchworte eingetragen sind. Bei ca. 40 Büchern einiges an Tipparbeit...
Nun zu meiner Frage: Wie verknüpfe ich die Tabellen? Und wie gestalte ich dann die Abfrage?
Viele Grüße
sunrise
ich bin ein ziemlicher Anfänger mit Datenbanken. Ich möchte für Bücher eines Fachbereiches (Yoga) ein Stichwortverzeichnis erstellen.
Das soll dann so funktionieren: Ich gebe ein Suchwort ein und erhalte als Ausgabe alle Buchtitel, das dazugehörige Kapitel und ggf. das Unterkapitel, wo überall dieses Suchwort auftaucht.
Ich muss also eine Tabelle mit allen Buchtiteln anlegen, dann für jeweils ein Buch eine Tabelle mit allen Kapiteln (für das nächste Buch ebenso) und dann ggf. für ein Kapitel eine Tabelle mit den Unterkapiteln (und das dann bei jedem Buch). Sodann eine Tabelle, in der alle Suchworte eingetragen sind. Bei ca. 40 Büchern einiges an Tipparbeit...
Nun zu meiner Frage: Wie verknüpfe ich die Tabellen? Und wie gestalte ich dann die Abfrage?
Viele Grüße
sunrise
ubuntu linux - small and beautiful
-
- *****
- Beiträge: 473
- Registriert: Fr, 09.10.2009 16:44
- Wohnort: Bielefeld
- Kontaktdaten:
Re: Stichwortverzeichnis anlegen
Hallo,
wozu willst Du so viele Tabellen anlegen? Du brauchst eine Tabelle mit Stichworten, eine mit den Buchtiteln und eine weitere, in der Du jeweils die ID des Stichworteintrags und die des Buches einträgst - das ist eine sogenannte m:n-Beziehung. Dann suchst Du mit SELECT Titel FROM T_BUCH where BUCH_ID = (SELECT B_ID FROM T_{m:n-Tabelle} WHERE S_ID = (SELECT ID FROM T_Stich WHERE Stichwort = 'Stichwort'))) oder wenn Du auch Wortstücke suchen willst mit .... WHERE Stichwort like '%Stichwortstück%'))).
Grüße
Andreas
wozu willst Du so viele Tabellen anlegen? Du brauchst eine Tabelle mit Stichworten, eine mit den Buchtiteln und eine weitere, in der Du jeweils die ID des Stichworteintrags und die des Buches einträgst - das ist eine sogenannte m:n-Beziehung. Dann suchst Du mit SELECT Titel FROM T_BUCH where BUCH_ID = (SELECT B_ID FROM T_{m:n-Tabelle} WHERE S_ID = (SELECT ID FROM T_Stich WHERE Stichwort = 'Stichwort'))) oder wenn Du auch Wortstücke suchen willst mit .... WHERE Stichwort like '%Stichwortstück%'))).
Grüße
Andreas
LO 4.3
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2
MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
AMD Athlon 64 3700+, 2.21 GHz, 4 GB RAM, Win XP SP3
iMac 2 GHz, 16 GB RAM/MacBookPro, 8 GB RAM, Mac OS X 10.9.5
Intel Core2 Quad CPU Q6600 @ 2,4 GHz, 4 GB RAM, Suse 13.2
MySQL 5.1: Pentium III, 666 MHz, 512 MB, Suse 12.1
Re: Stichwortverzeichnis anlegen
Aloha
Prinzipiell würde ich das so machen:
Tabelle Buch:
ID (PK)
Buchname
(sonstige Angaben, Author, Erscheinungsdatum, Ausgabe etcetc)
Tabelle Kapitel
ID (PK)
ID_Buch (FK Tabelle Buch -> ID)
Katelname (beispielsweise)
Tabelle Unterkapitel
ID (PK)
ID_Kapitel (FK Tabelle Kapitel -> ID)
Unterkapitelname (beispielsweise)
Stichwörter
Buch - Kapitel: 1 zu n
Kapitel - Untrekapitel 1 zu n
In die Spalte Stichwörter schreibst Du dann nach und nach einfach die enthaltenen Stichwörter, z.B. getrennt durch Leerzeichen ala "Sanskrit Savasana Guru"
Das Ergebnis liefert Dir dann eine Abfrage der Art
Je nach verwendeter Datenbank gibt es auch die Möglichkeit, per Full Text Search zu suchen, diese Suchart ist genau für derartige Vorgänge gedacht, ob die eingebettete HSQLDB das mitmacht, weiss ich nicht.
Das hilft dem Fragesteller allerdings nicht bei seinem ursprünglichen Wunsch:AndreasJBittner hat geschrieben:wozu willst Du so viele Tabellen anlegen? Du brauchst eine Tabelle mit Stichworten, eine mit den Buchtiteln und eine weitere, in der Du jeweils die ID des Stichworteintrags und die des Buches einträgst
sunrise hat geschrieben:Das soll dann so funktionieren: Ich gebe ein Suchwort ein und erhalte als Ausgabe alle Buchtitel, das dazugehörige Kapitel und ggf. das Unterkapitel, wo überall dieses Suchwort auftaucht.
Prinzipiell würde ich das so machen:
Tabelle Buch:
ID (PK)
Buchname
(sonstige Angaben, Author, Erscheinungsdatum, Ausgabe etcetc)
Tabelle Kapitel
ID (PK)
ID_Buch (FK Tabelle Buch -> ID)
Katelname (beispielsweise)
Tabelle Unterkapitel
ID (PK)
ID_Kapitel (FK Tabelle Kapitel -> ID)
Unterkapitelname (beispielsweise)
Stichwörter
Buch - Kapitel: 1 zu n
Kapitel - Untrekapitel 1 zu n
In die Spalte Stichwörter schreibst Du dann nach und nach einfach die enthaltenen Stichwörter, z.B. getrennt durch Leerzeichen ala "Sanskrit Savasana Guru"
Das Ergebnis liefert Dir dann eine Abfrage der Art
Code: Alles auswählen
SELECT "Buchname", "Kapitelname", "Unterkapitelname" FROM
"Buch" JOIN "Kapitel" ON "Buch"."ID" = "Kapitel"."ID_Buch" JOIN "Unterkapitel" ON "Unterkapitel"."ID_Kapitel" = "Kapitel"."ID"
WHERE "Unterkapitel"."Stichwörter" LIKE '%suchbegriff%'
Re: Stichwortverzeichnis anlegen
Hallo,
zunächst mal Danke für eure Antworten. Der Tipp von DPunch trifft mein Problem tatsächlich besser. Ich mache mich da mal dran und schaue, wie ich das hinbekomme.
Ciao,
Gotthard
zunächst mal Danke für eure Antworten. Der Tipp von DPunch trifft mein Problem tatsächlich besser. Ich mache mich da mal dran und schaue, wie ich das hinbekomme.
Ciao,
Gotthard
ubuntu linux - small and beautiful
Re: Stichwortverzeichnis anlegen
Hallo,
nachdem ich viel in Anleitungen gelesen habe, viel und gestern lang in die Nacht hinein rumprobiert habe,ich kriegs nicht hin.
Die drei Tabellen anlegen klappt. Habe sie mit ein Testdaten gefüttert.
Doch was bedeutet z. B.
Und beim Herstellen der Beziehungen:
Ciao,
Gotthard
nachdem ich viel in Anleitungen gelesen habe, viel und gestern lang in die Nacht hinein rumprobiert habe,ich kriegs nicht hin.
Die drei Tabellen anlegen klappt. Habe sie mit ein Testdaten gefüttert.
Doch was bedeutet z. B.
und dannID (PK)
Ich komme nicht dahinter.ID_Buch (FK Tabelle Buch -> ID)
Und beim Herstellen der Beziehungen:
heißt doch, die Tabellen Buch, Kapitel und Unterkapitel entsprechend in Beziehung zu setzen. Doch muss ich ein Feld (also z. B. ID_Buch) mit einem anderen Feld verbinden, anderes lässt OOo nicht zu. Da gab´s immer eine Fehlermeldung, die ich aber nicht verstand:Buch - Kapitel: 1 zu n
Kapitel - Untrekapitel 1 zu n
(SD0401 ist die ID_Unterkapitel eines Datensatzes, Kapitel und Unterkapitel sind Tabellen.Integrity constraint violation - no parent SD0401, table:
Unterkapitel in statement [ALTER TABLE "Unterkapitel" ADD
FOREIGN KEY ("ID_Unterkapitel") REFERENCES "Kapitel"
("ID_Kapitel")]
Ciao,
Gotthard
ubuntu linux - small and beautiful
Re: Stichwortverzeichnis anlegen
Aloha
Analog dazu bedeutet "ID_Buch (FK Tabelle Buch -> ID)", dass in der Tabelle eine Spalte "ID_Buch" als Fremdschlüssel (=ForeignKey=FK) angelegt werden soll, die die Spalte "ID" aus der Tabelle "Buch" referenziert.
In der Ansicht Beziehungen ziehst Du dann entsprechend das Feld "ID_Buch" der Tabelle "Kapitel" per Drag&Drop einfach auf das Feld "ID" der Tabelle "Buch" - so erstellst Du die 1:n Beziehungen sowie die Fremdschlüssel.
Der Vorschlag soll bedeuten, dass der Primärschlüssel (=PrimaryKey=PK) dieser Tabelle "ID" lautet.sunrise hat geschrieben:Doch was bedeutet z. B.und dannID (PK)Ich komme nicht dahinter.ID_Buch (FK Tabelle Buch -> ID)
Analog dazu bedeutet "ID_Buch (FK Tabelle Buch -> ID)", dass in der Tabelle eine Spalte "ID_Buch" als Fremdschlüssel (=ForeignKey=FK) angelegt werden soll, die die Spalte "ID" aus der Tabelle "Buch" referenziert.
Genau das war mit "ID_Buch (FK Tabelle Buch -> ID)" gemeint.sunrise hat geschrieben:heißt doch, die Tabellen Buch, Kapitel und Unterkapitel entsprechend in Beziehung zu setzen. Doch muss ich ein Feld (also z. B. ID_Buch) mit einem anderen Feld verbinden, anderes lässt OOo nicht zu.
In der Ansicht Beziehungen ziehst Du dann entsprechend das Feld "ID_Buch" der Tabelle "Kapitel" per Drag&Drop einfach auf das Feld "ID" der Tabelle "Buch" - so erstellst Du die 1:n Beziehungen sowie die Fremdschlüssel.
Re: Stichwortverzeichnis anlegen
Ach vielen, vielen Dank, dann kann ich morgen weiter machen,
ciao,
Gotthard
ciao,
Gotthard
ubuntu linux - small and beautiful
Re: Stichwortverzeichnis anlegen
Hallo,
die Relationen sind jetzt ok, habe ein bisschen was dazugelernt
.
Nachdem ich nun einige Testdaten eingegeben habe, wollte ich auch die Abfrage ausprobieren. Ich habe deine kopiert (lediglich Buchname ist bei mir Buchtitel) und eingetragen, doch da kam ein SQL-Syntax Error.
Dann habe ich es so probiert (mit "Tabelle"."Feldname"):
doch wieder Error. Nachfolgend die Meldungen:
Ciao,
Gotthard
die Relationen sind jetzt ok, habe ein bisschen was dazugelernt

Nachdem ich nun einige Testdaten eingegeben habe, wollte ich auch die Abfrage ausprobieren. Ich habe deine kopiert (lediglich Buchname ist bei mir Buchtitel) und eingetragen, doch da kam ein SQL-Syntax Error.
Dann habe ich es so probiert (mit "Tabelle"."Feldname"):
Code: Alles auswählen
SELECT "Buch"."Buchtitel", "Kapitel"."Kapitelname", "Unterkapitel"."Unterkapitelname" FROM "Buch" JOIN "Kapitel" ON "Buch"."ID" = "Kapitel"."ID_Buch" JOIN "Unterkapitel" ON "Unterkapitel"."ID_Kapitel" = "Kapitel"."ID"
WHERE "Unterkapitel"."Stichwörter" LIKE '%suchbegriff%'
Wo kann der Fehler liegen?SQL-Status: HY000
Fehler-Code: 1000
Syntax error in SQL expression
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Ciao,
Gotthard
ubuntu linux - small and beautiful
Re: Stichwortverzeichnis anlegen
Aloha
Mach mal oben in der Symbolleiste das Häkchen bei "SQL Kommando direkt ausführen".
Mach mal oben in der Symbolleiste das Häkchen bei "SQL Kommando direkt ausführen".
Re: Stichwortverzeichnis anlegen
Hallo,
sorry für die verzögerten Rückmeldungen, aber mit drei Kindern ist das nicht immer so leicht zu managen.
Den Hinweis mit dem Häkchen hatte ich nach einiger Recherche auch entdeckt, und seit dem probiere ich daran, eine Eingabemaske für die Abfrage zu machen, wo ich ein gesuchtes Stichwort eingebe und dann das bzw. die Ergebnisse bekomme.
Bei Probs melde ich mich wieder, ist ja echt interessant,
Gotthard
sorry für die verzögerten Rückmeldungen, aber mit drei Kindern ist das nicht immer so leicht zu managen.
Den Hinweis mit dem Häkchen hatte ich nach einiger Recherche auch entdeckt, und seit dem probiere ich daran, eine Eingabemaske für die Abfrage zu machen, wo ich ein gesuchtes Stichwort eingebe und dann das bzw. die Ergebnisse bekomme.
Bei Probs melde ich mich wieder, ist ja echt interessant,
Gotthard
ubuntu linux - small and beautiful