G
gabber
Guest
Hallo zusammen,
ich bin neu im Forum also habt bitte Verständnis wenn ich etwas falsch mache.
Kommen wir mal zu meinem Hilferufe. Ich habe ein altes DOS-Programm (Pilzkartierung) das ich aktuell neu entwicklen möchte. Die Pilzdaten vom DOS-Programm liegen aktuell in zwei DBF-Dateien die ich in Python auslesen kann. Gerne würde ich von diesen DBF-Files auf eine SQLite Datenbank portieren. Folgende Bedingungen müssen nacher bei der Portierung der Daten gegeben sein:
Hier mal ein kleines Beispiel wie ich an die Daten komme. Ich habe ja zwei DBF-Files. Die eine heißt Pilze die andere Synonyme. In der Pilze-DBF gibt es eine Satznummer die eindeutig ist. Leider wurde das damals mit Buchstaben gemacht, also steht beispielsweise unter Satznummer in der DBF-File sowas wie 'gpx'. Das würde ich gerne schonmal zu einer Zahl migrieren als das z.B dann Pilz 'gpx' die Zahl 1 hat usw. Das gleiche steht in der Synonym auch. Dadurch weiß das DOS-Programm alles was zu 'gpx' gehört, gehört zusammen. Und diese Zusammengehörigkeit möchte ich jetzt in eine SQLite Datenbank migrieren unter den oben genannten Bedigungen.
Hier mal ein Auszug was mir 'gpx' im DOS-Programm liefert:
Satznummer: gpx
Gruppe: r
Familie: Boletaceae
Gattung: Boletus
Vollname: Boletus edulis Bulliard
Deutscher Name: Fichten-Steinpilz, Herrenpilz
Anmerkung: Altfunden sind wohl teilweise ss.lato aufzufassen
Rote Liste: -
Synonyme:
Boletus bulbosus Schaeff.
Boletus esculentus Pers.
Boletus solidus Sowerby
Dictyopus edulis (Bull.) Forq.
...
Ich habe auch schon mir meine Gedanken gemacht wie das ganze aussehen könnte. Hier mal meine ganzen CREATE STATEMENTS.
CREATE TABLE "PILZE" (
"ID" INTEGER NOT NULL,
"VOLLNAME" TEXT NOT NULL UNIQUE,
"ARTID" INTEGER NOT NULL,
"FAMILIENID" INTEGER NOT NULL,
"GATTUNGSID" INTEGER NOT NULL,
"SYNONYMID" INTEGER,
"GRUPPENID" INTEGER,
"ROTELISTEID" INTEGER,
"DEUTSCHERNAME" TEXT,
"ANMERKUNG" TEXT,
PRIMARY KEY("ID" AUTOINCREMENT),
FOREIGN KEY("GRUPPENID") REFERENCES "GRUPPE"("ID"),
FOREIGN KEY("GATTUNGSID") REFERENCES "GATTUNG"("ID"),
FOREIGN KEY("FAMILIENID") REFERENCES "FAMILIE"("ID"),
FOREIGN KEY("SYNONYMID") REFERENCES "SYNONYME"("ID"),
FOREIGN KEY("ROTELISTEID") REFERENCES "ROTELISTE"("ID"),
FOREIGN KEY("ARTID") REFERENCES "ART"("ID")
);
CREATE TABLE "ART" (
"ID" INTEGER NOT NULL,
"ARTNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "FAMILIE" (
"ID" INTEGER NOT NULL,
"FAMILIENNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "GATTUNG" (
"ID" INTEGER NOT NULL,
"GATTUNGSNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "GRUPPE" (
"ID" INTEGER NOT NULL,
"GRUPPENNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "ROTELISTE" (
"ID" INTEGER NOT NULL,
"NAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "SYNONYME" (
"ID" INTEGER NOT NULL,
"SYNONYM" TEXT NOT NULL,
PRIMARY KEY("ID" AUTOINCREMENT)
);
In der Datenbank fehlt leider noch das Thema Literatur. Da hätte ich gerne sowas wie:
Daher meine Frage / Bitte an euch:
1. Kann mir jemand sagen wie ich diese Datenbank am besten aufgebaut wird? Die CREATE TABLE Statements währen perfekt!
2. Wie füge ich nacher die Daten in die Datenbank ein so das sie korrekt hinterlegt sind? (Die INSERT Befehle wären super)
3. Wie sieht dann später die SELECT Anweisung aus um an einen Pilz wie z.B den 'gpx' Pilz zu bekommen mit all seinen Informationen? Die Literatur soll erst angezeigt werden wenn auf ein Button geklickt wird (Dort soll auch neue hinzugefügt werden können)
Falls es Verbesserungsvorschläge gibt nur her mit falls ich total daneben liege mit dieser Struktur.
Hier mal die grafische Oberfläche für das neue Programm (sie ist noch nicht ganz fertig da fehlt z.B noch ein Feld für deutscher Name)
Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im Vorraus.
Grüße gabber
ich bin neu im Forum also habt bitte Verständnis wenn ich etwas falsch mache.
Kommen wir mal zu meinem Hilferufe. Ich habe ein altes DOS-Programm (Pilzkartierung) das ich aktuell neu entwicklen möchte. Die Pilzdaten vom DOS-Programm liegen aktuell in zwei DBF-Dateien die ich in Python auslesen kann. Gerne würde ich von diesen DBF-Files auf eine SQLite Datenbank portieren. Folgende Bedingungen müssen nacher bei der Portierung der Daten gegeben sein:
- Jeder Pilz hat eine eindeutige Nummer
- Ein Pilz hat einen eindeutigen Vollname
- Ein Pilz gehört zu genau einer Gattung
- Ein Pilz gehört zu genau einer Familie
- Ein Pilz gehört zu genau einer Art
- Ein Pilz kann keinen, einen oder mehrere deutsche Namen haben
- Ein Pilz kann kein, ein oder beliebig viele Synonyme haben
- Ein Pilz gehört zu einer oder keiner Roten Liste
- Jeder Pilz kann Anmerkungen hinterlegt haben (Diesen möchte ich einfach als Freitext in die Datenbank einfügen)
- Jeder Pilz hat seine eigene Literatur hinterlegt
Hier mal ein kleines Beispiel wie ich an die Daten komme. Ich habe ja zwei DBF-Files. Die eine heißt Pilze die andere Synonyme. In der Pilze-DBF gibt es eine Satznummer die eindeutig ist. Leider wurde das damals mit Buchstaben gemacht, also steht beispielsweise unter Satznummer in der DBF-File sowas wie 'gpx'. Das würde ich gerne schonmal zu einer Zahl migrieren als das z.B dann Pilz 'gpx' die Zahl 1 hat usw. Das gleiche steht in der Synonym auch. Dadurch weiß das DOS-Programm alles was zu 'gpx' gehört, gehört zusammen. Und diese Zusammengehörigkeit möchte ich jetzt in eine SQLite Datenbank migrieren unter den oben genannten Bedigungen.
Hier mal ein Auszug was mir 'gpx' im DOS-Programm liefert:
Satznummer: gpx
Gruppe: r
Familie: Boletaceae
Gattung: Boletus
Vollname: Boletus edulis Bulliard
Deutscher Name: Fichten-Steinpilz, Herrenpilz
Anmerkung: Altfunden sind wohl teilweise ss.lato aufzufassen
Rote Liste: -
Synonyme:
Boletus bulbosus Schaeff.
Boletus esculentus Pers.
Boletus solidus Sowerby
Dictyopus edulis (Bull.) Forq.
...
Ich habe auch schon mir meine Gedanken gemacht wie das ganze aussehen könnte. Hier mal meine ganzen CREATE STATEMENTS.
CREATE TABLE "PILZE" (
"ID" INTEGER NOT NULL,
"VOLLNAME" TEXT NOT NULL UNIQUE,
"ARTID" INTEGER NOT NULL,
"FAMILIENID" INTEGER NOT NULL,
"GATTUNGSID" INTEGER NOT NULL,
"SYNONYMID" INTEGER,
"GRUPPENID" INTEGER,
"ROTELISTEID" INTEGER,
"DEUTSCHERNAME" TEXT,
"ANMERKUNG" TEXT,
PRIMARY KEY("ID" AUTOINCREMENT),
FOREIGN KEY("GRUPPENID") REFERENCES "GRUPPE"("ID"),
FOREIGN KEY("GATTUNGSID") REFERENCES "GATTUNG"("ID"),
FOREIGN KEY("FAMILIENID") REFERENCES "FAMILIE"("ID"),
FOREIGN KEY("SYNONYMID") REFERENCES "SYNONYME"("ID"),
FOREIGN KEY("ROTELISTEID") REFERENCES "ROTELISTE"("ID"),
FOREIGN KEY("ARTID") REFERENCES "ART"("ID")
);
CREATE TABLE "ART" (
"ID" INTEGER NOT NULL,
"ARTNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "FAMILIE" (
"ID" INTEGER NOT NULL,
"FAMILIENNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "GATTUNG" (
"ID" INTEGER NOT NULL,
"GATTUNGSNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "GRUPPE" (
"ID" INTEGER NOT NULL,
"GRUPPENNAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "ROTELISTE" (
"ID" INTEGER NOT NULL,
"NAME" TEXT NOT NULL UNIQUE,
PRIMARY KEY("ID" AUTOINCREMENT)
);
CREATE TABLE "SYNONYME" (
"ID" INTEGER NOT NULL,
"SYNONYM" TEXT NOT NULL,
PRIMARY KEY("ID" AUTOINCREMENT)
);
In der Datenbank fehlt leider noch das Thema Literatur. Da hätte ich gerne sowas wie:
- ID
- Eintragsart: (NOT NULL)
- Titel: (NOT NULL)
- Autor:
- Band:
- Ausgabe:
- Seiten:
- Erscheinungsdatum:
- URL:
- ISBN:
- Hinzugefügt am:
Daher meine Frage / Bitte an euch:
1. Kann mir jemand sagen wie ich diese Datenbank am besten aufgebaut wird? Die CREATE TABLE Statements währen perfekt!
2. Wie füge ich nacher die Daten in die Datenbank ein so das sie korrekt hinterlegt sind? (Die INSERT Befehle wären super)
3. Wie sieht dann später die SELECT Anweisung aus um an einen Pilz wie z.B den 'gpx' Pilz zu bekommen mit all seinen Informationen? Die Literatur soll erst angezeigt werden wenn auf ein Button geklickt wird (Dort soll auch neue hinzugefügt werden können)
Falls es Verbesserungsvorschläge gibt nur her mit falls ich total daneben liege mit dieser Struktur.
Hier mal die grafische Oberfläche für das neue Programm (sie ist noch nicht ganz fertig da fehlt z.B noch ein Feld für deutscher Name)

Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im Vorraus.
Grüße gabber