[de-users] Re: Re: Datenbank: Werk eines Komponisten
Guenter Wallnig schrieb: Wenn er aber mal 09 oder gar nur 9, ein ander Mal aber 1992 eingibt, dann kommt die DB damit nicht klar. das kann man aber über constraints (Bedingungen) lösen Hört sich gut an. Wenn wir mal von der Semantik Jahr der Fertigstellung einer Komposition [Ganzzahl, Jahreszahl nach Christus, vier Ziffern] absehen und einen einfacheren Fall hernehmen: Gesamtzahl eingesetzter Instrumente [Ganzzahl, drei Ziffern] 09 ist zu 9 gleichwertig. Eine Integritäts-Regel, die stets strikt genau 3 Ziffern verlangen würde, wäre störend. Nützlich ist dann eine Funktion, die automatisch führenden Nullen ergänzt. Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Ernst Hügli schrieb: es gibt aber auch grafische Tools hierfür, Stichworte UML, entity relationship (o.ä.) Selbstverständlich gibt es diese Tools - die Frage ist bloss: soll ich - wenn ich nur gelegentlich mal eine DB selber entwerfen - mich dafür in ein weiteres Tool einarbeiten, das trotz GUI i.d.R. nicht trivial zu bedienen ist? Ich halte es da eher mit der altmodischen Variante: Einsteiger und Gelegenheits-Entwickler sollen zunächst einmal die Theorie verstehen lernen und ihre Entwürfe mit Papier (Flipchart-Bögen sind empfehlenswert) und Farbstift erarbeiten, dann können sie bei Bedarf immer noch weitere Tools anschaffen. Nicht um mich hier einzuschmeicheln: Ich halte das bisher genauso. Wenn ich z.B. Freunden helfe, eine Website zu konzipieren, ist Stift Papier nicht nur genügend, sondern ich gebe diesen Mitteln den Vorzug gegenüber jedem Werkzeug in Form von Software. Werkzeuge verführen nur allzuleicht zum Spielen, lenken ab vom Wesentlichen. Von einem von mir sehr geschätzten Gestalter und klaren Denker, Otl Aicher, gibt es BTW zu diesem Thema sehr gute Texte (in welchem Buch das war, daran erinnere ich mich leider gerade nicht). Einige Bücher habe ich mir mittlerweile beschafft. Der Hölscher ist auch darunter. Bin gespannt. Ich werde versuchen hier im Thread einen Gang zurückschalten. Verstehendes Lesen braucht Zeit ;) Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Ernst Hügli schrieb: [...] Ich hoffe, dass ich damit etwas klären konnte. Herzlichen Dank, Ernst, für das Auffächern der Zusammenhänge und Aspekte. Es ist wirklich eine Freude, welche lehrrreichen Beiträge hier (nicht nur von Dir) gepostet werden. Das sei bei dieser Gelegenheit mal gesagt. Danke an alle Beteiligten. :) Schöne Grüße, Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas Andreas Borutta schrieb: Wenn er aber mal 09 oder gar nur 9, ein ander Mal aber 1992 eingibt, dann kommt die DB damit nicht klar. das kann man aber über constraints (Bedingungen) lösen Hört sich gut an. Wenn wir mal von der Semantik Jahr der Fertigstellung einer Komposition [Ganzzahl, Jahreszahl nach Christus, vier Ziffern] absehen und einen einfacheren Fall hernehmen: Gesamtzahl eingesetzter Instrumente [Ganzzahl, drei Ziffern] 09 ist zu 9 gleichwertig. Eine Integritäts-Regel, die stets strikt genau 3 Ziffern verlangen würde, wäre störend. Nützlich ist dann eine Funktion, die automatisch führenden Nullen ergänzt. Wenn ich Deine Bemerkung am Schluss richtig verstehe, dann willst Du jetzt das Kind mit dem Bade ausschütten: natürlich kann eine DB problemlos mit Integer-Zahlen unterschiedlicher Länge umgehen - ein Erzwingen von führenden Nullen ist nicht nötig. Mein Beispiel bezog sich explizit auf Deine Vorgabe Jahr: die DB behandelt die Eingabe im Grunde genommen einfach als Integerzahl. Woher soll sie wissen, dass mit der Eingabe '09' oder '9' nicht das Jahr 9 n.Chr. gemeint ist, sondern 2009 - oder vielleicht doch 1909, oder was noch (ich habe dazu angemerkt, dass in Deinem Fall Jahrzahlen aus dem Mittelalter oder gar dem Altertum wenig realistisch sind, also vierstellige Zahlen 1500 oder drei- oder weniger stellige oder gar negative Zahlen)? Und hier musst Du im Entwurf ansetzen, wobei es mindestens zwei Möglichkeiten gibt: * mit einer Gültigkeitsprüfung, wie sie Guenter vorschlägt; Access sieht - im Gegensatz zu Base - eine solche Möglichkeit explizit im User-Interface für den Entwurf vor (als Angebot: take it or leave it) * durch Benutzung eines explizit als YEAR (o.ä.) deklarierten Feldtyps, wie Du mich für PHPMyAdmin in einer früheren Mail hingewiesen hast. Ich habe mit diesem Werkzeug bisher (noch?) nicht gearbeitet, vermute aber dennoch, dass dahinter eine vierziffrige Ganzzahl 1582 versteckt ist, also die von Guenter erwähnten Constraints teilweise in die Deklaration des Feldtyps integriert wurden. Alles Andere würde wenig Sinn machen Ohne sowas wird sie bei einer Selektion nach Jahren - z.B. Alle Werke, die nach der Jahrtausendwende komponiert wurden - je nach Formulierung gewisse Werke nicht finden: Setzest Du das Selektionskriterium auf 2000 (da das Jahr 2000 bekanntlich das letzte im 20. Jh. ist), dann findet er den Eintrag 09 nicht, denn 09 2000 (als Zahlenvergleich trivial). Oder aber: Du formulierst 00, und dann wird er mit Ausnahme der im Jahr 2000 (bzw. 1900, ..., wenn die Eintragungen so weit zurück reichen) eben alles finden. Fazit einmal mehr: der Entwurf (neudeutsch Design genannt) bestimmt, was Du nachher mit der DB anstellen kannst. Natürlich kannst Du im Nachhinein den Datentyp und allfällige Constraints noch ändern - doch je nach Anzahl Datensätzen steht Dir danach (oder davor, das ist teilweise Ansichtssache) noch ein hartes Stück Arbeit bevor, denn Du musst dann alle Werte anpassen - ob per Programm oder händisch ist dabei gleichgültig. Du investierst jedenfalls ein Mehrfaches der Zeit in die Korrektur, die Du für einen sauberen Entwurf benötigt hättest. Du musst dann nämlich auch noch sämtliche Beziehungen, ... prüfen, ob sich da nicht Folgefehler der Änderung einschleichen. Übrigens: die meisten DB und Tabellenkalkulationen haben mit Datumvariablen die erwähnte Restriktion: vierstellig, 1582. Die zweite Bedingung hat mit der Kalenderreform von Papst Gregor im Oktober 1582 zu tun, die erste ist wohl eine Frage des praktischen Nutzens bzw. der internen Darstellung von Datumwerten. So ist es denn wohl eher von theoretischer Bedeutung, dass Calc bereits ab dem Jahr 9958 Probleme mit der korrekten Darstellung eines Datums bekommt (ich habe mich noch nicht bemüht, die Ursache dieser Grenze zu eruieren - wahrscheinlich hängt es eben mit der internen Darstellung von Daten zusammen). Freundlich grüsst Ernst - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Ernst, hallo Andreas, mit den Jahreszahlen gibt es natürlich keine Probleme, wenn die Datenbank explizit diesen Datentyp besitzt (ist bei MySQL der Fall nicht aber bei HSQLDB). Bei MySQL könnte dann die zweistellige Angabe ausreichen. Das würde übersetzt in 1970-2069. Da es das bei HSQLDB nicht gibt ( http://hsqldb.org/doc/guide/ch09.html ) sehe ich keine Chance, so etwas im Datenbankentwurf zu erledigen. Ich wüsste nicht, wie ich ein Minimum und ein Maximum entsprechend für ein Tabellenfeld im Entwurf vordefiniere - lasse mich aber gerne eines Besseren belehren. Ich gehe davon aus, dass ich diese Sache nicht mit dem Datenbankentwurf erledigen kann sondern die Eingabe im Formular beeinflussen muss. Das bedeutet entweder eine Beschränkung im Eingabeformular ( Das geht ja bei numerischen Feldern ganz passabel - zwingt allerdings die benutzende Person bei Fehleingaben zu der Geduld, wirklich alles 4-stellig zu schreiben.) oder aber mittels eines zweistelligen Feldes und anschließender Auswertung desselben mit einem Makro und schreiben des entsprechenden vierstelligen Wertes in die Tabelle. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, Am Montag, 15. Juni 2009 schrieb Andreas Borutta: snip exkurs Syntax für Instrumentierung /exkurs Du siehst hier an diesem Beispiel schon, dass ein durchdachter Entwurf das A und O ist. Solche Sache wie zB das mit den Saxophonen, die extra aufgeführt werden und nicht ins Konzept passen, dürfen bei einem Datenbankentwurf nicht passieren. snip Dennoch finde ich, dass es der Nachhaltigkeit dient, wenn die Datenfelder der Tabelle in einer sinnvollen Reihenfolge stehen und sprechende Namen tragen. Das kann, muss aber nicht so sein. Kannst Du bitte ein konkretes Beispiel nennen, wo eine nicht sinnvolle Reihenfolge und schlechte Bezeichner von Datenfeldern die Wartbarkeit der Tabelle /nicht/ verschlechtern? Der Endanwender sieht den Entwurf, die Datenbank nicht. Er sieht Formulare und Ein- und Ausgabemasken. Der Entwickler der Datenbank entscheidet wie Datenfalder angeordnet werden. Die DB-Engine macht bestimmte Vorgaben, zB weil durch sie fest liegt, wie bestimmte Datentypen verarbeitet werden. Der Resourceverbrauch spielt eine Rolle mit. Und nicht zuletzt die interne Repräsentation des DB hat entscheidenden Anteil, was aus den Tabellen wird. Die anderen haben auch das eine oder andere Argument. Letztendlich ist es egal ob du die Tabelle ORT mit der Spaltenreihenfolge PLZ, ORTSNAME oder ORTSNAME,PLZ definierst. btw: Das ist einer der spannendsten Threads in der letzten Zeit. -- Mit freundlichen Grüßen Matthias Müller (Benutzer #439779 im Linux-Counter http://counter.li.org) PS: Bitte senden Sie als Antwort auf meine E-Mails reine Text-Nachrichten! signature.asc Description: This is a digitally signed message part.
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Guenter Wallnig schrieb: [Warnung vor dem Anpassen von MySQL mit Hilfe von Base] Also bleibt mir als Tool zum Verwalten allein PHPmyAdmin? nein, wie Du ja auch dem vorherigen posting entnehmen kannst und hier ... Doch, es ist möglich, Felder einzufügen. Nur bietet Base das nicht in seiner GUI an. ... menu:ExtrasSQL... ist die Kommandozeile zum Datenbank-Backend. Über diese Kommandozeile klappts dann auch mit MySQL wie mit jeder anderen Kommandozeile auch. diese Kommandozeile ist nichts anderes als ein Fenster in die Edit-Ebene von beispielsweise /usr/bin/mysql (unter Linux) Klar. Aber welchen Nutzen hat dann Base, sobald man ein MySQL-Datenbankmanagementsystem verwendet? Wenn ich es richtig verstanden habe, sollte man mit der GUI von Base weder einen Tabellenentwurf für MySQL erstellen noch Relationen knüpfen (Datenbankentwurf normalisieren), richtig? ich wiederhole nochmal aus meinen früheren Beitrag: In der c't 09/2003, ab S. 234 steht ein guter Artikel über Datenbanken Datenschule. Mit SQL zur eigenen Datenbank von Hajo Schulz Ein Freund von mir hat die Jahresarchive. Ich habe ihn gestern schon angeschrieben. Da Du als Verfahren die Kommandozeile erwähnst, nehme ich an, dass der Quellcode eines Tabellenentwurfes nicht in Form einer Textdatei editierbar ist, oder? Weil die MySQL-DB ja eigenständig ist (Base ist ja nur die GUI), kannst Du *sehr viel* mit den Tools für MySQL machen ... So erstellst Du mit einem Dump der DB eine editierbare ASCII-Datei, die *alle* Befehle zum Erstellen der DB enthält ... auf Wunsch sogar mit Benutzern und Passwörtern. Außerdem wählbar: nur Struktur oder Struktur mit Daten ... Dieser Dump ist eine gute Backup-Möglichkeit. Er kann auch zum Erstellen der DB auf einem anderen Rechner dienen. Habe mal nachgelesen, was Dump meint. Wohl vor allem Kopie. Aber wenn ich Dich richtig verstehe, kann man auch direkt darin editieren, ähnlich wie in einer Konfigurations-Datei. Wenn man dann die vorherige Datei durch den editierten Dump ersetzt, enthält die Datenbank alle Änderungen. Wie riskant und wie sinnvoll das ist, sei mal dahingestellt. Mich interessierte nur, ob es prinzipiell möglich ist. Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, Klar. Aber welchen Nutzen hat dann Base, sobald man ein MySQL-Datenbankmanagementsystem verwendet? Die Tabellen erstellst Du dann in dem anderen System, mit Base greifst Du auf die Tabellen lesend, suchend und schreiben zu, führst auch Abfragen durch. Wenn ich es richtig verstanden habe, sollte man mit der GUI von Base weder einen Tabellenentwurf für MySQL erstellen noch Relationen knüpfen (Datenbankentwurf normalisieren), richtig? Relationen werden in MySQL nicht von allen Tabellentypen unterstützt. Gerade der Standardtabellentyp MyISAM hat mit irgendeiner Realtionendefinition nichts am Hut. Diese Definition machst Du anschließend mit Deinem Formular und Deinen Abfragen. Für richtige Relationen musst Du z.B. InnoDB-Tabellen wählen. Wegen dieser unterschiedlichen Tabellen taugt hier eben ein Allround-Werkzeug wie Base nicht richtig, sondern es muss zur Erstellung dieser Tabellen besser auf eine spezielle MySQL-Basis zurückgegangen werden. Auch hier gehen sicher die Meinungen auseinander. Ich erstelle alle meine Datenbanken mit phpMyAdmin - und bin damit immer gut gefahren. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, *, Andreas Borutta schrieb: Guenter Wallnig schrieb: [Warnung vor dem Anpassen von MySQL mit Hilfe von Base] Also bleibt mir als Tool zum Verwalten allein PHPmyAdmin? nein, wie Du ja auch dem vorherigen posting entnehmen kannst und hier ... Doch, es ist möglich, Felder einzufügen. Nur bietet Base das nicht in seiner GUI an. ... menu:ExtrasSQL... ist die Kommandozeile zum Datenbank-Backend. Über diese Kommandozeile klappts dann auch mit MySQL wie mit jeder anderen Kommandozeile auch. diese Kommandozeile ist nichts anderes als ein Fenster in die Edit-Ebene von beispielsweise /usr/bin/mysql (unter Linux) Klar. Aber welchen Nutzen hat dann Base, sobald man ein MySQL-Datenbankmanagementsystem verwendet? Base ist ein Frontend, das einem Hilfestellungen geben kann, eine Oberfläche zu erstellen, und Daten aus einer Datenbank - jegweder Art - zu verwenden. Wenn ich es richtig verstanden habe, sollte man mit der GUI von Base weder einen Tabellenentwurf für MySQL erstellen Entwerfen - nein Erstellen - ja noch Relationen knüpfen (Datenbankentwurf normalisieren), richtig? Datenbankentwurf normalisieren macht man auf dem Papier Die Relationen zwischen den einzelnen Tabellen können in Base dann erstellt werden. ich wiederhole nochmal aus meinen früheren Beitrag: In der c't 09/2003, ab S. 234 steht ein guter Artikel über Datenbanken Datenschule. Mit SQL zur eigenen Datenbank von Hajo Schulz Ein Freund von mir hat die Jahresarchive. Ich habe ihn gestern schon angeschrieben. Da Du als Verfahren die Kommandozeile erwähnst, nehme ich an, dass der Quellcode eines Tabellenentwurfes nicht in Form einer Textdatei editierbar ist, oder? Weil die MySQL-DB ja eigenständig ist (Base ist ja nur die GUI), kannst Du *sehr viel* mit den Tools für MySQL machen ... So erstellst Du mit einem Dump der DB eine editierbare ASCII-Datei, die *alle* Befehle zum Erstellen der DB enthält ... auf Wunsch sogar mit Benutzern und Passwörtern. Außerdem wählbar: nur Struktur oder Struktur mit Daten ... Dieser Dump ist eine gute Backup-Möglichkeit. Er kann auch zum Erstellen der DB auf einem anderen Rechner dienen. Habe mal nachgelesen, was Dump meint. Wohl vor allem Kopie. Aber wenn ich Dich richtig verstehe, kann man auch direkt darin editieren, ähnlich wie in einer Konfigurations-Datei. Wenn man dann die vorherige Datei durch den editierten Dump ersetzt, enthält die Datenbank alle Änderungen. Es wird nicht eine Datei ersetzt. Du solltest dich mit der Struktur und den Informationen eines Datenbank-Dumpes auseinandersetzen. Wie riskant und wie sinnvoll das ist, sei mal dahingestellt. Mich interessierte nur, ob es prinzipiell möglich ist. Grundsätzlich ja, aber IMO nur für kleine, sehr gezielte Änderungen sinnvoll Gruß Mechtilde -- Dipl. Ing. Mechtilde Stehmann ## http://de.openoffice.org ## Ansprechpartnerin für die deutschsprachige QA ## Freie Office-Suite für Linux, Mac, Windows, Solaris ## Meine Seite http://www.mechtilde.de ## PGP encryption welcome! Key-ID: 0x53B3892B - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Matthias Müller schrieb: Wenn das Ganze gut wird, möchte ich die Datenbank auch anderen Komponisten zur freien Nutzung bereitstellen. Die in der Rohdatentabelle aufgeführten Merkmale gelten für beliebige Kompositionen von Komponisten für neue Musik, sagte mir mein Freund. Da musst du dir aber absolut sicher sein, dass das so ist. Das ganze lieber dreimal hinterfragen. Ich gebe mir alle Mühe. Die Zusammenarbeit läuft bereits mehrere Wochen. exkurs Aktuell habe ich den Komponist dazu angeregt, die komplette Syntax der Besetzung zu spezifizieren. Da gab es einige Inkonsistenzen. Existierende Konventionen dazu zeigen z.B. ihre Ausrichtung auf die Formatierung sich auf heutige Symphonie-Orchester. Die Saxophone z.B. sind noch nicht fester Bestandteile eines Orchesters. Daher bekommen sie nicht ihre eigene auf Ziffern abgekürzte Gruppierung (etwa. 4422 - 4x Sopransax, 4x Altosax, 2x Tenorsax, 2x Baritonsax wäre denkbar) sondern werden einzeln aufgelistet als eine Besonderheit. Des weiteres werden diese Konventionen möglicherweise in dem Windorchester-Zusammenhang anders verstanden, wo Saxophone dazu gehören und keine Streicher vorkommen. Er hat das gerne aufgegriffen und arbeitet jetzt mit einem Kollegen dran. Fernziel: Berechnung der Stimmenzahl aus dem Datenfeld Besetzung Auch werden dann Abkürzung und Langform in einer Tabelle hinterlegt. So würde die Ausgabe von Übersetzungen möglich. Auch in verschiedenen Sprachen. /exkurs snip Dennoch finde ich, dass es der Nachhaltigkeit dient, wenn die Datenfelder der Tabelle in einer sinnvollen Reihenfolge stehen und sprechende Namen tragen. Das kann, muss aber nicht so sein. Kannst Du bitte ein konkretes Beispiel nennen, wo eine nicht sinnvolle Reihenfolge und schlechte Bezeichner von Datenfeldern die Wartbarkeit der Tabelle /nicht/ verschlechtern? Ich kann mir noch keines vorstellen. Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Andreas Borutta schrieb: ... Habe mal nachgelesen, was Dump meint. Wohl vor allem Kopie. Aber wenn ich Dich richtig verstehe, kann man auch direkt darin editieren, ähnlich wie in einer Konfigurations-Datei. Wenn man dann die vorherige Datei durch den editierten Dump ersetzt, enthält die Datenbank alle Änderungen. Wie riskant und wie sinnvoll das ist, sei mal dahingestellt. Mich interessierte nur, ob es prinzipiell möglich ist. Andreas Ja - siehe dazu die vorherigen Antworten... Aber wenn es dich im Detail interessiert (was es sollte) dann liest du hier: http://dev.mysql.com/doc/refman/5.1/de/backup-policy.html Viel Freude weiterhin. Ich verfolge diese Thread mit Spannung. Wenn ich was helfen kann - melde ich mich. mfg Volker btw: Vielleicht hilft dir auch noch das Buch: Datenbanken mit Openoffice 3 (so ähnlich müsste es heissen) von Thomas Krumbein weiter?! - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo, Robert Großkopf schrieb: Hallo Andreas, Klar. Aber welchen Nutzen hat dann Base, sobald man ein MySQL-Datenbankmanagementsystem verwendet? Die Tabellen erstellst Du dann in dem anderen System, mit Base greifst Du auf die Tabellen lesend, suchend und schreiben zu, führst auch Abfragen durch. Wenn ich es richtig verstanden habe, sollte man mit der GUI von Base weder einen Tabellenentwurf für MySQL erstellen noch Relationen knüpfen (Datenbankentwurf normalisieren), richtig? Relationen werden in MySQL nicht von allen Tabellentypen unterstützt. Gerade der Standardtabellentyp MyISAM hat mit irgendeiner Realtionendefinition nichts am Hut. Diese Definition machst Du anschließend mit Deinem Formular und Deinen Abfragen. so kann man es auch machen. Für richtige Relationen musst Du z.B. InnoDB-Tabellen wählen. Wegen dieser unterschiedlichen Tabellen taugt hier eben ein Allround-Werkzeug wie Base nicht richtig, sondern es muss zur Erstellung dieser Tabellen besser auf eine spezielle MySQL-Basis zurückgegangen werden. Auch hier gehen sicher die Meinungen auseinander. Ich erstelle alle meine Datenbanken mit phpMyAdmin - und bin damit immer gut gefahren. Ich habe beides schon gemacht. Für mich kam es dabei auf den Einzelfall an. So kann und muss jede/r selber rausfinden, wie man am Besten ein Problem löst. Ich denke, es lohnt sich mit einem Weg anzufangen und später auch alternativen auszuprobieren. Gruß Mechtilde -- Dipl. Ing. Mechtilde Stehmann ## http://de.openoffice.org ## Ansprechpartnerin für die deutschsprachige QA ## Freie Office-Suite für Linux, Mac, Windows, Solaris ## Meine Seite http://www.mechtilde.de ## PGP encryption welcome! Key-ID: 0x53B3892B - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Robert Großkopf schrieb: http://www.scoolonline.de/download/Musik_Klassik.odb Zu Primärschlüsseln: Du verwendest auch in Tabellen mit nur einem Datenfeld (Beispiel Tabelle Form) zusätzlich einen Primärschlüssel. Jeder Datensatz enthält dort jedoch einen anderen Wert. Dubletten kommen nicht vor. http://borumat.de/+screenshots/sc-052.png Kann daher das Datenfeld Form nicht selbst als Primärschlüssel dienen? Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, Andreas Borutta schrieb: Guenter Wallnig schrieb: Also bleibt mir als Tool zum Verwalten allein PHPmyAdmin? nein, wie Du ja auch dem vorherigen posting entnehmen kannst und hier ... ... menu:ExtrasSQL... ist die Kommandozeile zum Datenbank-Backend. Über diese Kommandozeile klappts dann auch mit MySQL wie mit jeder anderen Kommandozeile auch. diese Kommandozeile ist nichts anderes als ein Fenster in die Edit-Ebene von beispielsweise /usr/bin/mysql (unter Linux) Klar. Aber welchen Nutzen hat dann Base, sobald man ein MySQL-Datenbankmanagementsystem verwendet? Programme wie 'mysql' sind rein Text-orientiert, nichts grafisches. Auf dieser Ebene kann man ALLE Einschränkungen (Constraints) machen, wie fest vorgegebene Möglichkeiten, nicht leer, ... Base stülpt der Sache ein GUI über, daß dann mit der Maus bedient werden kann. Linux User 06/2006, S. 48: Datenbanken mit OpenOffice Zitat : Was unter Windows Microsoft Access leistet, bietet unter Linux OpenOffice Base: ein komfortables grafischen Datenbank-Interface für Tabellen, Formulare und Abfragen. --- Zitat-Ende Die richtige Datenbank finden, Linux User 12/2006, S. 90 Datensilos für den Schrebergarten http://www.linux-user.de/ Auf dem Linux-Tag 1998 gab es auch einen Vortrag Linux-Datenbanken und ihre Anwendung, von Nils Faerber. Einiges davon gilt auch noch heute. Es gibt auch noch andere GUI für MySQL: KnoDa, Knorr's Datenbank http://www.knoda.org/ Siehe auch Datenbankier, Plattformunabhängige GUI-Programmierung mit Qt, Teil 5: Datenbanken, c't 05/2006, S. 214 MySQL GUI Tools Downloads, z.B. MySQL Administrator 1.2 http://dev.mysql.com/downloads/gui-tools/5.0.html ist ein mächtiges Tool Weiterhin: c't 20/2005, S. 150: Fach-Arbeiter, Werkzeug für den effizienten Umgang mit Datenbank-Engines ThinSQL Zitat : ThinSQL is a free applet-php_MySQL or applet-servlet utility that connects to an SQL server over the Internet. It's compatible with proxy servers and network firewalls because it uses HTTP as its main method of communication. --- Zitat-Ende http://www.kgo.de/ThinSQL.html Da Du als Verfahren die Kommandozeile erwähnst, nehme ich an, dass der Quellcode eines Tabellenentwurfes nicht in Form einer Textdatei editierbar ist, oder? Weil die MySQL-DB ja eigenständig ist (Base ist ja nur die GUI), kannst Du *sehr viel* mit den Tools für MySQL machen ... So erstellst Du mit einem Dump der DB eine editierbare ASCII-Datei, die *alle* Befehle zum Erstellen der DB enthält ... auf Wunsch sogar mit Benutzern und Passwörtern. Außerdem wählbar: nur Struktur oder Struktur mit Daten ... Dieser Dump ist eine gute Backup-Möglichkeit. Er kann auch zum Erstellen der DB auf einem anderen Rechner dienen. Habe mal nachgelesen, was Dump meint. Wohl vor allem Kopie. Aber wenn ich Dich richtig verstehe, kann man auch direkt darin editieren, ähnlich wie in einer Konfigurations-Datei. Wenn man dann die vorherige Datei durch den editierten Dump ersetzt, enthält die Datenbank alle Änderungen. Wie riskant und wie sinnvoll das ist, sei mal dahingestellt. Das Ganze ist nur als Backup sinnvoll, oder wenn Du Teile mal in anderer Umgebung, beispielsweise in einer Test-DB mal ausprobieren willst. Insbesondere ist die Umstellung des Typs einer Spalte, z.B. von INT auf REAL (oder so) nicht in der DB möglich, aber durch die Folge DROP TABLE Xyz CREATE TABLE Xyz kannst Du auch so etwas machen. Solange die Namen gleich und Abfragen gleich bleiben, ist das auch kein Problem. Ansonsten ist das überhaupt nicht riskant, weil Du NICHT an der DB sondern an einer Kopie in Textform arbeitest. Erst durch einen Import (oder so) wird daraus eine Datenbank. Die Gesamte DB vom (veränderten) Backup zu laden ist zwar möglich, aber bei großen DB nicht sinnvoll. Im Großen und Ganzen sieht so ein Dump etwa so aus: DROP TABLE tabellenname; CREATE TABLE tabellenname ( spaltenname1 datentyp [einschränkung], spaltenname2 datentyp [einschränkung], ... ); Mich interessierte nur, ob es prinzipiell möglich ist. Andreas Ich hoffe, alle Klarheiten sind beseitigt? MfG Günter - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Andreas Borutta schrieb: Zu Primärschlüsseln: Du verwendest auch in Tabellen mit nur einem Datenfeld (Beispiel Tabelle Form) zusätzlich einen Primärschlüssel. Jeder Datensatz enthält dort jedoch einen anderen Wert. Dubletten kommen nicht vor. http://borumat.de/+screenshots/sc-052.png Kann daher das Datenfeld Form nicht selbst als Primärschlüssel dienen? Andreas Jain :) Dazu folgender Denkansatz (ohne das ich jetzt wüsste was in dem Datenfeld Form gespeichert wird) Du nimmst eine Tabelle die u.a. ein Datum enthält. Dieses läst sich ja, wie wir wissen (danke Ernst), in eine Zahl packen. Dafür brauchst du je nach Betriebssystem und Datenbank eine gewisse größe an Speicherplatz. Sagen wir mal 6 Byte. Wenn du nun diese Zahl als Primärschlüssel verwendest, mit dem du auch Relationen herstellen willst, dann findest du eben diese Zahl auch in den zugeordneten Felder aller anderen Tabellen. Jedes mal mit 6 Byte Platz. Führst du aber einen (sinnvollen) Primärschlüssel auf Basis einer Ganzzahl in der Tabelle die vielleicht nur 4 Byte belegt, dann sparst du neben Speicher auch eine Menge Rechenzeit ein. Das ganze wird natürlich noch extremer, wenn du anstelle eines 6 Byte Datumsfeldes, einen 50 Byte [Var{Char}] Wert nehmen würdest. Die Frage ist auch, ob sich eine Tabelle mit nur einem Datenfeld und einem Primärschlüssel lohnt. Das ist stark von Design der Datenbank abhängig. U.u. spielen da noch andere Faktoren eine Rolle - wie z.B. Geschwindigkeit, (externe) Speicherzugriffe, etc. cu volker - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, Robert Großkopf schrieb: http://www.scoolonline.de/download/Musik_Klassik.odb Zu Primärschlüsseln: Du verwendest auch in Tabellen mit nur einem Datenfeld (Beispiel Tabelle Form) zusätzlich einen Primärschlüssel. Jeder Datensatz enthält dort jedoch einen anderen Wert. Dubletten kommen nicht vor. http://borumat.de/+screenshots/sc-052.png Kann daher das Datenfeld Form nicht selbst als Primärschlüssel dienen? Dann wäre eigentlich die ganze Tabelle überflüssig. Denn wenn Du nur die Form wie Gesang oder Orchester in der Tabelle führst ergibt sich bei der Haupttabelle zwangsläufig, dass genau dieser Begriff dort eingetragen werden muss - und eben nicht eine (speicherplatzschonende) Ziffer. Sobald Du dann die Begriffe aus irgendeinem Grund ändern würdest, würde Dir die Datenbank in etwa mitteilen, dass die Änderung aufgrund von Beziehungen zu anderen Tabellen (hier: Work) nicht möglich ist - es sei denn, Du lässt automatisch alle Begriffe in Work auch ersetzen. Eine Tabelle mit einer Spalte könnte also lediglich genau dasselbe erfüllen wie eine Liste, die auch direkt im Listenfeld geführt wird. Sie vermeidet fehlerhafte ähnliche Eingaben, lässt aber den Inhalt der Tabelle munter wachsen. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Volker, Volker Heggemann schrieb: Andreas Borutta schrieb: Zu Primärschlüsseln: Du verwendest auch in Tabellen mit nur einem Datenfeld (Beispiel Tabelle Form) zusätzlich einen Primärschlüssel. Jeder Datensatz enthält dort jedoch einen anderen Wert. Dubletten kommen nicht vor. http://borumat.de/+screenshots/sc-052.png Kann daher das Datenfeld Form nicht selbst als Primärschlüssel dienen? Andreas Jain :) Dazu folgender Denkansatz (ohne das ich jetzt wüsste was in dem Datenfeld Form gespeichert wird) ... prinzipiell würde das schon gehen, solange die Werte hier EINDEUTIG sind. Mit anderen Worten: jeder Wert darf nur EINMAL vorkommen. Dafür brauchst du je nach Betriebssystem und Datenbank eine gewisse größe an Speicherplatz. Sagen wir mal 6 Byte. Wenn du nun diese Zahl als Primärschlüssel verwendest, mit dem du auch Relationen herstellen willst, dann findest du eben diese Zahl auch in den zugeordneten Felder aller anderen Tabellen. Jedes mal mit 6 Byte Platz. Führst du aber einen (sinnvollen) Primärschlüssel auf Basis einer Ganzzahl in der Tabelle die vielleicht nur 4 Byte belegt, dann sparst du neben Speicher auch eine Menge Rechenzeit ein. Das ganze wird natürlich noch extremer, wenn du anstelle eines 6 Byte Datumsfeldes, einen 50 Byte [Var{Char}] Wert nehmen würdest. ... cu volker ist es nicht so, daß aus dem Primärschlüssel ein Index gebildet wird und NUR dieser in Relationen verwendet wird? Relativ sicher bin ich mir, das dies in PostgreSQL so ist. Mir ist zumindest so, als wenn z.B. eine BLZ, die für die man als ZAHL ja schon ein LONG INT braucht, sehr gut als PK verwenden kann. Ähnliches gilt für PLZ als Zahl. MfG Günter - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Guenter Wallnig schrieb: Hallo Volker, Volker Heggemann schrieb: Andreas Borutta schrieb: Zu Primärschlüsseln: Du verwendest auch in Tabellen mit nur einem Datenfeld (Beispiel Tabelle Form) zusätzlich einen Primärschlüssel. Jeder Datensatz enthält dort jedoch einen anderen Wert. Dubletten kommen nicht vor. http://borumat.de/+screenshots/sc-052.png Kann daher das Datenfeld Form nicht selbst als Primärschlüssel dienen? Andreas Jain :) Dazu folgender Denkansatz (ohne das ich jetzt wüsste was in dem Datenfeld Form gespeichert wird) ... prinzipiell würde das schon gehen, solange die Werte hier EINDEUTIG sind. Mit anderen Worten: jeder Wert darf nur EINMAL vorkommen. Dafür brauchst du je nach Betriebssystem und Datenbank eine gewisse größe an Speicherplatz. Sagen wir mal 6 Byte. Wenn du nun diese Zahl als Primärschlüssel verwendest, mit dem du auch Relationen herstellen willst, dann findest du eben diese Zahl auch in den zugeordneten Felder aller anderen Tabellen. Jedes mal mit 6 Byte Platz. Führst du aber einen (sinnvollen) Primärschlüssel auf Basis einer Ganzzahl in der Tabelle die vielleicht nur 4 Byte belegt, dann sparst du neben Speicher auch eine Menge Rechenzeit ein. Das ganze wird natürlich noch extremer, wenn du anstelle eines 6 Byte Datumsfeldes, einen 50 Byte [Var{Char}] Wert nehmen würdest. ... cu volker ist es nicht so, daß aus dem Primärschlüssel ein Index gebildet wird und NUR dieser in Relationen verwendet wird? Relativ sicher bin ich mir, das dies in PostgreSQL so ist. Mir ist zumindest so, als wenn z.B. eine BLZ, die für die man als ZAHL ja schon ein LONG INT braucht, sehr gut als PK verwenden kann. Ähnliches gilt für PLZ als Zahl. Ja, klar kann man das machen. Aber dann muß man auch darauf achten, das der User dort nur Zahlen eingibt. Was wenn einer bei BLZ eine Internationale IBAN speichern will? Oder auf einmal vor die PLZ noch das Land schreibt? Sprich - dann muß die Datenbankoberfläche auch eine Eingabeprüfung machen. Und ich schrieb ja auch, das ich keine Kenntnis des Inhaltes des Feldes Form habe. Was ich meine gelesen zu haben ist, das dieses Feld per 1:n Relation mit weiteren Tabelle verknüpft ist. mfg Volker - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, Zur Struktur, die vermutlich das Wichtigste beim Erstellen einer DB ist, habe ich noch Fragen. 1 Rechtfertigung für weitere Tabellen Du verwendest in Tabelle Work für $Year ein Datenfeld, speist jedoch die Gattung (Form) via ID ein. Auch gleiche Werte für Jahr kommen vor. Das Jahr ist ja bereits eine einfache Ziffernfolge. Es wird außerdem auf jeden Fall doch häufiger geändert. Wenn Du vor allem mit den Base-Formularen etwas über ein Listfeld eingibst ist die Neueingabe immer ein Problem. Deshalb nehme ich in Tabellen einfache Ziffernfolgen direkt mit auf. Damit das im Formular einfacher ist habe ich daraus jetzt ein Kombinationsfeld gemacht. Leider gibt es in Base noch nicht die Art Kombinationsfelder, die bei Neueingabe eines Wertes diesen in eine separate Tabelle schreiben und anschließend die entsprechende ID in die Haupttabelle übertragen. Für PHP/MySQL habe ich mir so etwas konstruiert. Handelt es sich dabei um eine Frage des Geschmacks oder gibt es objektive Kriterien für eine Entscheidung. Ist wohl wirklich eine Frage des Geschmacks. Ich habe in dieser Liste auch schon Meinungen gehört, z.B. für Adressdaten einfach alles in eine Tabelle zu packen. Grundlage einer Datenbank mit Beziehungsstrukturen ist aber eigentlich, Doubletten vor allem längerer Feldinhalte zu vermeiden. Dito für Instrumentation. Die Instrumentation schien mir einer häufigeren Wiederholung zu unterliegen. Es gibt zur Zeit 31 verschiedene Instrumentationsarten mit bei 43 Work-Einträgen. Ich vermute, dass die Wiederholungen bei der Instrumentation noch größer werden. Sollte das nicht der Fall sein, so würde sich hier natürlich eher das Verfahren wie mit den Jahreszahlen anbieten. 2 WorkLengthTruth und WorkPartLengthTruth Hier gibt es eine Abhängigkeit. Zur Zeit wird diese noch nicht durch die Struktur abgebildet. Beispiel: Work.LengthTruth kann den Wert WAHR enthalten, während gleichzeitig WorkPart.LengthTruth, bei einem Werksteil des gleichen Werkes, den Wert FALSCH einnehmen kann. Logisch ist das verboten. Einfachste Möglichkeit wäre wohl, die LengthTruth-Eigenschaft aus WorkPart auszulesen und dann über eine Abfrage im Hauptformular anzuzeigen (ähnlich der momentanen Anzeige der fehlenden/überschüssigen Sekunden). Da muss ich noch etwas dran überlegen. Das Dumme, wenn Du die Anzeige so machst: Du kannst die LengthTruth-Eigenschaft von Work nicht mehr beeinflussen, wenn kein Unterformular existiert. Wenn ich Andreas Saeger richtig verstanden habe, kann man allein durch eine richtige Struktur sowas vermeiden, ohne Makros. Aber wie gesagt: ich bin nicht sicher, ob es so gemeint war. Das ginge m.E. nur über diese Abfragemöglichkeit. Kleinigkeit am Rande: Wie schreibt man eigentlich in der richtigen Syntax über Datenfeld 'LenghtTruth' der Tabelle 'WorkPart' der Datenbank 'SimonBarberWork', damit man sich eindeutig verständigen kann? Irgendwas in der Form SimonBarberWork.WorkPart.LengthTruth? Also [Datenbankdatei].[Tabellenname].[Datenfeldname]? Sieh Dir dazu die Abfrage LegthDiff an: Length_Work.ID Bezieht sich auf die Abfrage Length_Work und dort auf die ID. Du müsstest also bei der Angabe des Datenbanknamens genauso verfahren. Die Untergliederung mit dem Datenbanknamen wird z.B. bei der Einbindung von äußeren Datenbanken benutzt - für MySQL habe ich hier solche Konstruktionen. 3 Nummerierung der Werksteile/ Primärschlüssel Du hattest ja schon geschrieben, dass von Primärschlüsseln abzuraten ist, die aus einem Datentyp als INTEGER bestehen. In den Rohdaten tragen Werksteile IDs, die sehr klar und gut lesbar sind: 7a, 7b, etc. In Deiner Datenbank tragen die Werksteile IDs, die keine Schluss auf die Zugehörigkeit zu einem Werk erlauben. Ist es in einem solchen Fall empfehlenswert die sprechende ID manuell als zusätzliches Datenfeld einzuführen. Die Verbindung erfolgt doch sichtbar im Formular. Wenn Du die Untergliederungen der Tabelle der Unterformulars mit a,b,c usw. sortieren willst, so muss natürlich diese Sortierung noch zusätzlich in die Tabelle WorkPart eingegeben werden. Sozusagen IDs für Maschinen, $WorkNumber und $WorkPartNumber für Menschen? Das berührt auch die Frage, ob man beim Löschen eines Datensatzes die IDs der anderen Datensätze anpassen sollte oder nicht. Ist es bewährte Praxis die Maschinen-IDs niemals nach dem ersten Erstellen zu ändern? Einfaches Beispiel aus unserer Schülerbücherei: Die zuständigen Kolleginnen meinten immer, an den Mediennummern erkennen zu wollen, wie viele Medien doch in der Bücherei vorhanden sind. Sie ärgerten sich, wenn ein Medium aussortiert wurde und diese Nummern frei wurden. Ich habe dann, in meiner Naivität, eine Funktion geschrieben, die automatisch bei der nächsten Neueingabe die freigewordenen Werte belegte. Nichts mehr mit AutowertIDs. Später kam dann, dass plötzlich Medien mit der gleichen ID existierten - weil die Büchereileute von Buchverlusten ausgegangen sind, das
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Andreas, auch wenn jetzt die Warnungen von allen möglichen Seiten kommen: ich frage mich, wozu denn dann das Base-Modul da ist, wenn die Bedenken für die Erstellung von Datenbanken so groß sind. Ich habe an meiner Schule auch die entsprechenden Bedenken von allen möglichen Leuten gehört, als wir das damalige Datenbankprogramm nicht von DOS nach Windows für 2000,- DM portieren wollten sondern ich die Erstellung einer Datenbank auf der Grundlage der vorliegenden Tabellen mit Hilfe von StarOffice 5.1 und dem damaligen Adabas übernommen habe. Es hat geklappt, die Folgeprodukte wurden besser und werden in der Praxis in mehreren Schulbibliotheken ohne Probleme angewandt - von einem Amateur erstellt, der zu seinen Studienzeiten noch nicht einmal einen Taschenrechner beutzte. Einfachste Möglichkeit wäre wohl, die LengthTruth-Eigenschaft aus WorkPart auszulesen und dann über eine Abfrage im Hauptformular anzuzeigen (ähnlich der momentanen Anzeige der fehlenden/überschüssigen Sekunden). Da muss ich noch etwas dran überlegen. Ich habe die LengthTruth-Abfrage einmal konstruiert und hochgeladen. Ist aber in reinem SQL geschrieben, so dass sie nicht im Grafikmodus angesehen werden kann (Für die Experten: CASE WHEN ... THEN ... WHEN ... THEN ... ELSE ... END geht nicht mit der GUI). Die Abfrage produziert eine Meldung im Formular, die angibt, dass die Truth-Eigenschafft stimmt oder eben nicht. Wenn das Ganze wirklich ein reibungsloses Formular werden soll kommst Du vermutlich nicht an Makros vorbei. Ich weiß ja nicht, wie hoch die Ansprüche angesiedelt sind. Ich selbst würde da die PHP/MySQL/JavaScript-Variante nehmen. Nur dauert das entsprechend wesentlich länger, da einem die Benutzeroberfläche in Base doch entschieden Arbeit abnimmt. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo, Am Sonntag, 14. Juni 2009 schrieb Robert Großkopf: Hallo Andreas, auch wenn jetzt die Warnungen von allen möglichen Seiten kommen: ich frage eine dieser Seiten bin ich.. mich, wozu denn dann das Base-Modul da ist, wenn die Bedenken für die Erstellung von Datenbanken so groß sind. Ich habe an meiner Schule auch die entsprechenden Bedenken von allen möglichen Leuten gehört, als wir das damalige Datenbankprogramm nicht von DOS nach Windows für 2000,- DM portieren wollten sondern ich die Erstellung einer Datenbank auf der Grundlage der vorliegenden Tabellen mit Hilfe von StarOffice 5.1 und dem damaligen Adabas übernommen habe. Das hier ist der Knackpunkt. Du hattest einen fertigen Datenbankentwurf (aka fertige Tabellen). Diese Tabellen musstest du nur übernehmen und ein Frontend dran programmieren. Es hat geklappt, die Folgeprodukte wurden besser und werden in der Praxis in mehreren Schulbibliotheken ohne Probleme angewandt - von einem Amateur erstellt, der zu seinen Studienzeiten noch nicht einmal einen Taschenrechner beutzte. Dafür meine Anerkennung, denn das ist nicht trivial. Aber es ist kein Datenbankentwurf. Aufgrund deiner Erfahrung kannst Du vermutlich jetzt eine Datenbank entwerfen. Aber es gehören ein paar Konzepte dazu, die man verstanden haben muss, sonst kann das ganz schnell ganz schön schief gehen. Der Hinweis von Andreas Säger mit dem Bogen Papier und den Buntstiften trifft den Kern (btw ich würde mindestens DIN A2/A1 nehmen :-) ). Das Erkennen der Abhängigkeiten und der daraus resultierende Entwurf der Datenbank ist absolut essentiell. Eine Datenbank ist im wesentlichen statisch und eine nachträgliche Änderung/Ergänzung mündet normalerweise im Chaos. @ Andreas Borutta Du agierst als Dienstleister für einen Freund und solltest dich auf jeden Fall mit den Hintergründen zu Datenbanken befassen. Zumal du, laut eigenem Bekunden, planst, diese Datenbank anderen Komponisten zur Verfügung zu stellen. Das kann nur funktionieren, wenn das Konzept stimmt. Ansonsten nagelt dich dein Freund ans Kreuz. Genug der Bedenken, ich will euch nicht den Spass verderben, sondern nur darauf hinweisen, dass die Theorie nicht zu kurz kommen darf. Ansonsten wünsche ich viel Erfolg. -- Mit freundlichen Grüßen Matthias Müller (Benutzer #439779 im Linux-Counter http://counter.li.org) PS: Bitte senden Sie als Antwort auf meine E-Mails reine Text-Nachrichten! signature.asc Description: This is a digitally signed message part.
Re: [de-users] Re: Re: Datenbank: Werk eines Komponisten
Hallo Mathias, auch wenn jetzt die Warnungen von allen möglichen Seiten kommen: ich frage eine dieser Seiten bin ich.. mich, wozu denn dann das Base-Modul da ist, wenn die Bedenken für die Erstellung von Datenbanken so groß sind. Ich habe an meiner Schule auch die entsprechenden Bedenken von allen möglichen Leuten gehört, als wir das damalige Datenbankprogramm nicht von DOS nach Windows für 2000,- DM portieren wollten sondern ich die Erstellung einer Datenbank auf der Grundlage der vorliegenden Tabellen mit Hilfe von StarOffice 5.1 und dem damaligen Adabas übernommen habe. Das hier ist der Knackpunkt. Du hattest einen fertigen Datenbankentwurf (aka fertige Tabellen). Diese Tabellen musstest du nur übernehmen und ein Frontend dran programmieren. Das kannst Du nicht wissen: Deine Vermutung ist falsch. Die vorliegende Datenbank war eine, die eben nicht relational aufgebaut war. Lediglich ein Tabellenrest der ursprünglich nach dBase-Art aufgebauten Datenbank ist jetzt noch zu erkennen. Die Relationen habe ich selbst gestrickt. Natürlich habe ich mich im Laufe der Zeit sachkundig gemacht, vor allem, als es von StarOffice weg zu MySQL und PHP ging. Und dann sind es entschieden mehr Datenbanken geworden: Haushalt und Finanzen der Schule, Adressen, Beiträge usw. des Sportvereins, CMS-System für eine Homepage ... Ich möchte andere ermutigen, selbst die Sache in die Hand zu nehmen. Wenn nur immer mit professionellem Anspruch gewunken wird, wird keiner mehr das Base-Modul anrühren. Ich bin eher der Typ, der andere ermutigt, etwas zu tun. Unter anderem aus diesem Grund bin ich Lehrer geworden. Gruß Robert - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
[de-users] Re: Re: Datenbank: Werk eines Komponisten
Robert Großkopf schrieb: Guten Morgen zusammen, das Mittagessen wartet. Ich habe gerade einen Entwurf der Datenbanktabellen nach Deiner Tabelle gemacht. Er steht unter http://www.scoolonline.de/download/Musik_Klassik.odb echt nett von Dir, Robert! :) Ganz herzlichen Dank! Wenn Du mal Interesse an Noten zu neuer Musik bekommst, melde Dich bitte. Der Komponist revanchiert sich gerne. Zur Struktur, die vermutlich das Wichtigste beim Erstellen einer DB ist, habe ich noch Fragen. 1 Rechtfertigung für weitere Tabellen Du verwendest in Tabelle Work für $Year ein Datenfeld, speist jedoch die Gattung (Form) via ID ein. Auch gleiche Werte für Jahr kommen vor. Handelt es sich dabei um eine Frage des Geschmacks oder gibt es objektive Kriterien für eine Entscheidung. Dito für Instrumentation. 2 WorkLengthTruth und WorkPartLengthTruth Hier gibt es eine Abhängigkeit. Zur Zeit wird diese noch nicht durch die Struktur abgebildet. Beispiel: Work.LengthTruth kann den Wert WAHR enthalten, während gleichzeitig WorkPart.LengthTruth, bei einem Werksteil des gleichen Werkes, den Wert FALSCH einnehmen kann. Logisch ist das verboten. Wenn ich Andreas Saeger richtig verstanden habe, kann man allein durch eine richtige Struktur sowas vermeiden, ohne Makros. Aber wie gesagt: ich bin nicht sicher, ob es so gemeint war. Kleinigkeit am Rande: Wie schreibt man eigentlich in der richtigen Syntax über Datenfeld 'LenghtTruth' der Tabelle 'WorkPart' der Datenbank 'SimonBarberWork', damit man sich eindeutig verständigen kann? Irgendwas in der Form SimonBarberWork.WorkPart.LengthTruth? Also [Datenbankdatei].[Tabellenname].[Datenfeldname]? 3 Nummerierung der Werksteile/ Primärschlüssel Du hattest ja schon geschrieben, dass von Primärschlüsseln abzuraten ist, die aus einem Datentyp als INTEGER bestehen. In den Rohdaten tragen Werksteile IDs, die sehr klar und gut lesbar sind: 7a, 7b, etc. In Deiner Datenbank tragen die Werksteile IDs, die keine Schluss auf die Zugehörigkeit zu einem Werk erlauben. Ist es in einem solchen Fall empfehlenswert die sprechende ID manuell als zusätzliches Datenfeld einzuführen. Sozusagen IDs für Maschinen, $WorkNumber und $WorkPartNumber für Menschen? Das berührt auch die Frage, ob man beim Löschen eines Datensatzes die IDs der anderen Datensätze anpassen sollte oder nicht. Ist es bewährte Praxis die Maschinen-IDs niemals nach dem ersten Erstellen zu ändern? Habe mich gerade noch einmal für 45 Minuten dran gesetzt. Irgendwie hat die Formatierung des Datums als nicht richtig funktioniert. Habe das jetzt als 4-stellige Zahl realisiert. OK. Vermutest Du da einen Bug in Base? Die Daten sind drin, aber noch nicht verknüpft. Jetzt sind sie verknüpft, soweit es Titel und Untertitel angeht. Für di ersten Titel sind auch die anderen Verknüpfungen über das Formular erstellt. Das ist sehr hilfreich für den Einstieg. Danke nochmal. Das Thema Datenbank, besonders deren Strukturen, beginnt mich mehr und mehr zu interessieren. Zur Datenbank Inventur: Ich lege am liebsten alle Daten, die ich in der Datenbank brauche, auch dort ab. Maßeinheiten sind beispielsweise nicht Bestandteil der darunterliegenden Datenbank, sondern auch in Base nur durch die Benutzeroberfläche zusätzlich einstellbar. Verstehe ich Dich richtig, dass Du hier Formatierungen meinst? Und Formatierungsinformationen (Formatcode wie 0,00' EUR') werden beim Import der Datenbank in eine andere Anwendung nicht, oder nicht zuverlässsig übertragen? Für meine Web-Datenbanken entnehme ich die Werte für Listfelder grundsätzlich solchen kleinen Tabellen Was spricht denn gegen eine Aufnahme der Einheit in einem Datenfeld derselben Tabelle? Also in Inventur.Name: $ID | $Name | $Preis | $PreisEinheit Für $Einheit könnte als Defaultwert EUR eingestellt werden. Oder muss man EUR als Konstante auffassen und es ist dann bewährte Praxis Konstanten so in die Datenbankstruktur einzubinden, wie Du es tust? Andreas -- OOo 3.1 http://borumat.de/openoffice-writer-tipps - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org