Seite 1 von 1
Calc-Tabellen in DB-Tabellen
Verfasst: Sa, 29.11.2008 12:29
von OdysseusL
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
Re: Calc-Tabellen in DB-Tabellen
Verfasst: So, 30.11.2008 11:14
von komma4
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.
Re: Calc-Tabellen in DB-Tabellen
Verfasst: So, 30.11.2008 17:22
von OdysseusL
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.
Re: Calc-Tabellen in DB-Tabellen
Verfasst: So, 30.11.2008 17:46
von komma4
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?
Re: Calc-Tabellen in DB-Tabellen
Verfasst: So, 30.11.2008 22:25
von OdysseusL
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!!!
Re: Calc-Tabellen in DB-Tabellen
Verfasst: Mo, 01.12.2008 06:05
von komma4
OdysseusL hat geschrieben:Obwohl auch das ziemliche manuelle Arbeit bedeutet (und fehleranfällig ist).
Ein bisschen manuelle Arbeit:
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.
Re: Calc-Tabellen in DB-Tabellen
Verfasst: Mo, 01.12.2008 20:07
von OdysseusL
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
