Hallo,
ich habe eine riesige Calc-Tabelle mit etlichen Feldern. Jetzt habe ich vor, diese in eine Datenbank (HSQLDB unter OOo) zu überführen. Nach längerem Überlegen kam ich beim DB-Design damit raus, dass ich intern etwas neun Tabellen brauche, die miteinander in Beziehung stehen.
Meine Frage: Gibt es einen Weg, die Spalten der Calc-Tabelle auf die einzelnen Tabellen der künftigen DB zu verteilen und dabei die Beziehungen (innerhalb einer "Calc-Zeile") nicht aufzugeben? Auf Anhieb fällt mir nur der Weg über das Schreiben eines Programms ein.
Ich bin für jeden Tipp und/oder Hinweis dankbar.
Tschüss,
OdysseusL
Calc-Tabellen in DB-Tabellen
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc-Tabellen in DB-Tabellen
Willkommen im Forum.
Kopiere die Daten von Calc, gehe in den Tabellenbereich Deiner HSQLDB und wähle "Einfügen" aus dem Kontextmenu.
Der Assistent fragt Dich nach den zu übernehmenden Spalten: wähle die aus, die Du in der ersten Tabelle haben möchtest.
Vergebe keinen Primärschlüssel.
Wiederhole das für Deine neun Tabellen.
Anschliessend kannst Du den Primärschlüssel pro Tabelle festlegen.
Hilft das?
Anmerkung: die interne HSQLDB ist IMHO Spielzeug (Einzelbenutzersystem, man liesst von Datenverlusten, es fehlen Adminwerkzeuge, ...). Nehme MySQL oder PostgreSQL, das funktioniert seit Jahren gut mit OOo.
Kopiere die Daten von Calc, gehe in den Tabellenbereich Deiner HSQLDB und wähle "Einfügen" aus dem Kontextmenu.
Der Assistent fragt Dich nach den zu übernehmenden Spalten: wähle die aus, die Du in der ersten Tabelle haben möchtest.
Vergebe keinen Primärschlüssel.
Wiederhole das für Deine neun Tabellen.
Anschliessend kannst Du den Primärschlüssel pro Tabelle festlegen.
Hilft das?
Anmerkung: die interne HSQLDB ist IMHO Spielzeug (Einzelbenutzersystem, man liesst von Datenverlusten, es fehlen Adminwerkzeuge, ...). Nehme MySQL oder PostgreSQL, das funktioniert seit Jahren gut mit OOo.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc-Tabellen in DB-Tabellen
Danke für den Willkommens-Gruß und für die Antwort.
So wie von Dir beschrieben hatte ich vor das zu machen. Das Problem was immer noch bleibt ist die Beziehung wieder herzustellen. Habe ich die HSQLDB-Tabellen mit den einzelnen Spalten der Calc-Tabellen gefüllt bleibt immer noch das manuelle Setzen der Beziehungen (bzw. Fremdschlüsseln), welche ja in einer Calc-Tabelle inhärent in einer Zeile besteht.
Bei mehreren Hundert Zeilen mit mehreren Tabellen eine mühselige und fehleranfällige Arbeit.
So wie von Dir beschrieben hatte ich vor das zu machen. Das Problem was immer noch bleibt ist die Beziehung wieder herzustellen. Habe ich die HSQLDB-Tabellen mit den einzelnen Spalten der Calc-Tabellen gefüllt bleibt immer noch das manuelle Setzen der Beziehungen (bzw. Fremdschlüsseln), welche ja in einer Calc-Tabelle inhärent in einer Zeile besteht.
Bei mehreren Hundert Zeilen mit mehreren Tabellen eine mühselige und fehleranfällige Arbeit.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc-Tabellen in DB-Tabellen
ich glaube, ich komme (langsam) zum Kern Deiner Frage: Dir geht es um die Normalisierung?
Angenommen, Deine Tabelle beinhaltet Ausgabe:
Datum, Betrag, Verwendungszweck, MWSt.-Satz
2008-11-01, 100, Versicherung, 19
2008-11-01, 800, Miete, 0
2008-11-01, 50, Strom, 19
2008-11-01, 123, Lebensmittel, 7
und Du legst eine DB-Tabelle Verwendung an:
ID, Text
1,Versicherung
2,Miete
3,Strom
4,Lebensmittel
eine weitere: MWStSatz
ID, Wert
1, 0
2, 7
3, 19
Deine Ziel-DB-Tabelle sollte dann so verknüpft werden:
Datum, Betrag, ID_Verwendung, ID_MWST
2008-11-01, 100, 1, 3
2008-11-01, 800, 2, 1
2008-11-01, 50, 3, 3
2008-11-01,123, 4, 2
.... dann lege Dir in Calc Hilfsspalten an, die mit SVERWEIS die IDn zu Verwedung und MWSt aus Hilfstabellen holen.
Verstehe ich Deine Frage nun - und Du meine Absichten hier?
Angenommen, Deine Tabelle beinhaltet Ausgabe:
Datum, Betrag, Verwendungszweck, MWSt.-Satz
2008-11-01, 100, Versicherung, 19
2008-11-01, 800, Miete, 0
2008-11-01, 50, Strom, 19
2008-11-01, 123, Lebensmittel, 7
und Du legst eine DB-Tabelle Verwendung an:
ID, Text
1,Versicherung
2,Miete
3,Strom
4,Lebensmittel
eine weitere: MWStSatz
ID, Wert
1, 0
2, 7
3, 19
Deine Ziel-DB-Tabelle sollte dann so verknüpft werden:
Datum, Betrag, ID_Verwendung, ID_MWST
2008-11-01, 100, 1, 3
2008-11-01, 800, 2, 1
2008-11-01, 50, 3, 3
2008-11-01,123, 4, 2
.... dann lege Dir in Calc Hilfsspalten an, die mit SVERWEIS die IDn zu Verwedung und MWSt aus Hilfstabellen holen.
Verstehe ich Deine Frage nun - und Du meine Absichten hier?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc-Tabellen in DB-Tabellen
Ja, Du hast mich verstanden
Sorry, dass ich es so umständlich beschrieben habe. Das mit den "Hilfsspalten" ist ein sehr interessante Idee und hört sich sehr verlockend an.
Ich glaube ich mach' das so. Obwohl auch das ziemliche manuelle Arbeit bedeutet (und fehleranfällig ist).
Vielen Dank für den Tipp!!!

Ich glaube ich mach' das so. Obwohl auch das ziemliche manuelle Arbeit bedeutet (und fehleranfällig ist).
Vielen Dank für den Tipp!!!
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc-Tabellen in DB-Tabellen
Ein bisschen manuelle Arbeit:OdysseusL hat geschrieben:Obwohl auch das ziemliche manuelle Arbeit bedeutet (und fehleranfällig ist).
als Erstes legst Du Dir mal eine Sicherungskopie Deiner Calc an!
Zum Erstellen der ID-Spalten nehme den Standardfilter mit Option "Ohne Duplikate" und gebe das Ergebnis in neuen Tabellenblätter aus. So bekommst Du bspw. eine Tabelle "Verwendung":
Versicherung
Miete
Strom
Lebensmittel
Die ID dazu lässt Du in der nächsten Spalte generieren: "1" eingeben, runterziehen.
In der "Haupt"tabelle lässt Du die Zuordnung durch eine Verweisformel erstellen.
Weiterhin viel Erfolg.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc-Tabellen in DB-Tabellen
Hallo Winfried,
nochmals herzlichen Dank für Deine Hilfe.
Da ich mich selber nur sehr wenig mit "Calc" auskenne, sind mir einige Deiner Anweisungen (noch) etwas fremd. D.h. ich werde mich erst einmal einarbeiten und Deinen "workflow" Schritt für Schritt durch gehen. Das braucht seine Zeit.
Ich werde Rückmeldung geben, wie weit ich damit gekommen bin.
Nochmals vielen Dank für die sehr ausführliche Hilfe!!!
Bis bald mit hoffentlich guten Nachrichten
nochmals herzlichen Dank für Deine Hilfe.
Da ich mich selber nur sehr wenig mit "Calc" auskenne, sind mir einige Deiner Anweisungen (noch) etwas fremd. D.h. ich werde mich erst einmal einarbeiten und Deinen "workflow" Schritt für Schritt durch gehen. Das braucht seine Zeit.
Ich werde Rückmeldung geben, wie weit ich damit gekommen bin.
Nochmals vielen Dank für die sehr ausführliche Hilfe!!!
Bis bald mit hoffentlich guten Nachrichten
