Seite 1 von 1
Welche Datenbankschnittstelle?
Verfasst: Samstag 12. Dezember 2009, 19:08
von cos4
Ich frage mich welche Datenbankschnittstelle für mich die richtige für mich ist.
Ich suche eine Datenbank zur Speicherung von Daten aus kleineren Projekten. Eigentlich hatte ich sqlite im Auge aber mich stört, dass es keine foreign keys gibt. Eigentlich braucht man die doch ständig, wie kommen soviele Leute ohne aus? Verlassen die sich einfach darauf, dass die Daten stimmen?
Wenn man zb mehrere Exemplare eines Buches hat, hat man doch schon 2 Tabellen,eine davon mit einem foreign key.
Welche db würdet ihr mir empfehlen? Ein seperat laufender Server wäre etwas overkill da finde ich die sqlite Lösung besser. Auch Tipps zu sqlite sind willkommen schließlich kommen viele ja auch damit aus.
Verfasst: Samstag 12. Dezember 2009, 19:41
von ms4py
Sqlite kennt ja FKs nur nicht als Constraint, einsetzen kannst du sie ja trotzdem.
Verfasst: Samstag 12. Dezember 2009, 20:14
von cos4
Aber sie haben dann keine Wirkung oder?
Verfasst: Samstag 12. Dezember 2009, 20:31
von ms4py
cos4 hat geschrieben:Aber sie haben dann keine Wirkung oder?
Benötigst du denn einen Constraint? (Oder besser gefragt, ist dir der Unterschied zwischen einem Constraint und einem normalen Feld überhaupt klar).
Bei einer übersichtlichen Datenstruktur ist doch das Fehlen der Constraints überhaupt kein Probelm. Du hast halt keine automatischen UPDATE und DELETE Kaskadierungen, aber das kann man ja auch manuell implementieren.
Verfasst: Samstag 12. Dezember 2009, 21:40
von cos4
Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Verfasst: Sonntag 13. Dezember 2009, 11:05
von Leonidas
cos4 hat geschrieben:Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Das kannst du ja so oder so, egal ob du Foreign Key Constraints hast oder nicht.
Ich bin grad dabei SQL-Kram aufzugeben und in die Key/Value-Welt abzuwandern

Verfasst: Sonntag 13. Dezember 2009, 11:53
von ms4py
cos4 hat geschrieben:Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Bei einer einfachen Datenstruktur und mit ein bisschen Nachdenken sollte das halt dann nicht passieren

Verfasst: Sonntag 13. Dezember 2009, 17:57
von gerold
cos4 hat geschrieben:Ich brauche das ha letztlich vor allem um sicher sein zu können, dass die Datensätze stimmen. Sonst kann ich doch durch verborgene programmierfehler inkosistente dbs erzeugen.
Hallo cos4!
Wenn die Datenbank komplexer werden sollte und du die Aufgabe der Validierung mehr der Datenbank überlassen möchtest, dann musst du ein Datenbankmanagementsystem wie z.B. PostgreSQL benutzen.
Wenn du Daten in einer Datenbankdatei abspeichern möchtest, die die Möglichkeit bietet, darauf per SQL zuzugreifen, dann nimm SQLite. Was ich damit sagen möchte: Du musst auf Fremdschlüssel verzichten, wenn du SQLite verwenden möchtest. Du musst auf einfache Verteilbarkeit verzichten, wenn du PostgreSQL verwenden möchtest.
Ich handhabe das so:
Für Client-Server-Anwendungen nehme ich PostgreSQL. Das ist ideal dafür geeignet. Kann mit vielen gleichzeitigen Verbindungen sehr gut umgehen und kümmert sich darum, dass nur gewünschte Personen auf gewisse Daten zugreifen können. Mit dieser Datenbank habe ich alles was mein Datenbankprogrammierer-Herz begehrt.
Wenn ich ein performantes Speicherformat für Desktopanwendungen (z.B. Rezepteverwaltung, lokale Adressendatenbank, ...) benötige, das sehr gut nach Daten durchsucht werden kann und gut von Client zu Client ausgetauscht werden kann, dann nehme ich SQLite -- mit der Einschränkung, dass SQLite keine Fremdschlüssel kann.
mfg
Gerold

Verfasst: Sonntag 13. Dezember 2009, 18:04
von cos4
Danke. Dann werde ich wohl sqlite nehmen. Habe noch gesehen, dass man sowas ähnliches wie fks wohl mit triggern machen kann, dazu gibts sogar nen Codegenerator
http://rcs-comp.com/site/index.php/view ... _generator
Verfasst: Montag 14. Dezember 2009, 16:42
von paddg 42
Der Thread hat mir sehr geholfen.
Nur eine Frage: Gibt es PostgreSQL auch als Modul für Python 3.0?
Verfasst: Montag 14. Dezember 2009, 17:03
von Leonidas
paddg 42 hat geschrieben:Nur eine Frage: Gibt es PostgreSQL auch als Modul für Python 3.0?
Ja, pg8000 hat auch eine Python 3-Version.
Verfasst: Montag 14. Dezember 2009, 17:05
von paddg 42
Danke. Ich werds in meinem Projekt nutzen.