Stichwortverzeichnis anlegen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Stichwortverzeichnis anlegen

Beitrag von sunrise »

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
ubuntu linux - small and beautiful
AndreasJBittner
*****
Beiträge: 473
Registriert: Fr, 09.10.2009 16:44
Wohnort: Bielefeld
Kontaktdaten:

Re: Stichwortverzeichnis anlegen

Beitrag von AndreasJBittner »

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
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
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Stichwortverzeichnis anlegen

Beitrag von DPunch »

Aloha
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
Das hilft dem Fragesteller allerdings nicht bei seinem ursprünglichen Wunsch:
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%'
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.
sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Re: Stichwortverzeichnis anlegen

Beitrag von sunrise »

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
ubuntu linux - small and beautiful
sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Re: Stichwortverzeichnis anlegen

Beitrag von sunrise »

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.
ID (PK)
und dann
ID_Buch (FK Tabelle Buch -> ID)
Ich komme nicht dahinter.

Und beim Herstellen der Beziehungen:
Buch - Kapitel: 1 zu n
Kapitel - Untrekapitel 1 zu n
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:
Integrity constraint violation - no parent SD0401, table:
Unterkapitel in statement [ALTER TABLE "Unterkapitel" ADD
FOREIGN KEY ("ID_Unterkapitel") REFERENCES "Kapitel"
("ID_Kapitel")]
(SD0401 ist die ID_Unterkapitel eines Datensatzes, Kapitel und Unterkapitel sind Tabellen.

Ciao,

Gotthard
ubuntu linux - small and beautiful
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Stichwortverzeichnis anlegen

Beitrag von DPunch »

Aloha
sunrise hat geschrieben:Doch was bedeutet z. B.
ID (PK)
und dann
ID_Buch (FK Tabelle Buch -> ID)
Ich komme nicht dahinter.
Der Vorschlag soll bedeuten, dass der Primärschlüssel (=PrimaryKey=PK) dieser Tabelle "ID" lautet.
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.
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.
Genau das war mit "ID_Buch (FK Tabelle Buch -> ID)" gemeint.
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.
sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Re: Stichwortverzeichnis anlegen

Beitrag von sunrise »

Ach vielen, vielen Dank, dann kann ich morgen weiter machen,

ciao,

Gotthard
ubuntu linux - small and beautiful
sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Re: Stichwortverzeichnis anlegen

Beitrag von sunrise »

Hallo,

die Relationen sind jetzt ok, habe ein bisschen was dazugelernt :D .

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%'
doch wieder Error. Nachfolgend die Meldungen:
SQL-Status: HY000
Fehler-Code: 1000

Syntax error in SQL expression

syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Wo kann der Fehler liegen?

Ciao,

Gotthard
ubuntu linux - small and beautiful
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Stichwortverzeichnis anlegen

Beitrag von DPunch »

Aloha

Mach mal oben in der Symbolleiste das Häkchen bei "SQL Kommando direkt ausführen".
sunrise
*
Beiträge: 18
Registriert: Sa, 17.06.2006 23:16

Re: Stichwortverzeichnis anlegen

Beitrag von sunrise »

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
ubuntu linux - small and beautiful
Antworten