Erweiterbare Datenbanken

Ich suche ein Programm mit dem man erweiterbare Datenbanken schaffen kann (wie Keepass)… Da hat es ein paar feste Felder und man kann dann beliebige neue Felder bei der Benutzung einfügen. Kann Access das? Oder womit ist das bei Keepass gemacht?

Danke,
Brainstuff

Das kann man mit Access grundsätzlich problemlos machen. Kommt auf den gewünschten Komfort und das technische Verständnis an. Als Entwickler mit Vollzugriff auf alle Funktionen, kann man einzelne Tabellen jederzeit um weitere Felder ergänzen. Wobei man aber normalerweise zusieht, Tabellen nicht endlos breit anzulegen, sondern dann eher miteinander verkettete Tabellen nutzt. Möchte man das alles für den Endanwender realisieren, der eine eigene Oberfläche ohne Zugang zum vollständigen Funktionsumfang erhalten soll, ist die Sache auch machbar, aber mit einigem Aufwand verbunden.

1 Like

Du könntest das mit Key(-Name)-Value Zeilen in einer Tabelle lösen.

Wenn man die Formulare, Berichte und Abfragen so ausrichtet, dass sie diese Dynamik mitmachen (das dürfte das größere Problem sein) so ist das mit ein bisschen VBA machbar.

Es gibt dabei zwei Ansätze:

  • Die Anwendung greift direkt in das Tabellen-Design ein. Das bedeutet aber, dass jeder Anwender entsprechende Administrationsrechte benötigt und somit auch Teile der Tabelle so verändern kann, dass alles unbrauchbar wird. Daher gilt das als eher schlechtes Datenmodell.

  • Es gibt eine Tabelle in der die Werte dieser Zusatzfelder gespeichert werden. Die besteht im einfachsten Fall aus vier Feldern:

  1. Bezeichner, zu welcher Haupt-Tabelle der Datensatz gehört
  2. Bezeichner für das Zusatzfeld (quasi der Feldname)
  3. DatensatzID aus der Haupt-Tabelle
  4. Wert

Sinnvoll ist eine weitere Tabelle, in der definiert wird, welche Zusatzfelder es gibt und ggf. welchen Datentyp sie aufnehmen dürfen.

Mit der zweite Variante handelt man sich aber schnell ein Performance-Problem ein.

BTW: Access ist eher ein Auslaufmodell. Es ist IMHO nur eine Frage der Zeit, wann Microsoft das Produkt nicht mehr weiterenwickelt. Neue Projekte, die lange in Verwendung sein sollen, würde ich damit nicht mehr angehen.

Wenn man keine Ahnung von Datenbanken hat, ist aber genau das die Gefahr dabei, und dann kann man auch gleich bei Excel oder gar Word bleiben.:sweat_smile:

Moin,

Nachtigall, ick hör dir trapsen - ist das die Wundertüte, mit der die Anwender frei Schnauze Daten zusammenstoppeln können? Dazu braucht es zwei Parteien: zum einen die Anwender, die ja schließlich ihre Bedürfnisse (wenn auch nicht ihre Daten) kennen, und eine IT, die sagt „Macht euern Dreck doch alleene“.

Während meiner 40 Jahre als Entwickler kam spätestens alle zwei Jahre jemand mit dieser grandiosen Idee daher, sie sind alle krachend gescheitert, weil die Anwender mit der Definition der Daten heillos überfordert sind. Gute Datenstrukturen kosten Geld, nicht ohne Grund gibt es sowas wie Datenmodellierung, allererste Vorausetzung für sicheren Betrieb.

Selbst professionelle Entwicklungen wie Query by Example von IBM - ein Reportgenerator für die Anwender - konnten sich nicht durchsetzen, weil die Fachabteilungen erst im Einsatz erkannt haben, wie mühsam es ist, brauchbaren Input für den Aufbau der Datenstrukturen zu liefern.

(Ich gestehe, in den frühen 80ern selbst an einem solchen Projekt mitgesündigt zu haben - von irchenzwatt muss Mensch ja leben)

Gruß
Ralf

Danke für eure Antworten. Aber ich weiss natürlich schon, dass man bei der Entwicklung (und auch später) von einer Datenbank mehr oder weniger viele Datenfelder hinzufügen kann.

Bei Keepass kann das aber nicht nur der Entwickler, sondern auch der Nutzer.

Der Nutzer hat da mehrere Vorlagen die er sich da auswählen kann und es hat auch die Möglichkeit, da anscheinend beliebig viele Felder dran zu hängen.

Ich gehe eigentlich davon aus, dass es eine sehr gute Idee ist, dass man zum Beispiel in einer Adressen Datenbank, jederzeit noch ein vom Nutzer erzeugtes Feld dran hängen kann.

Es sollte sogar möglich sein, dass man vom VCF Format aus eine komplette Datenbank erzeugen kann. Da hat dann die „normale“ Datenbank, die Standard Felder und wenn die dann die Daten einliest, dann erweitert sie sich beliebig mit zusätzlichen Feldern.

Das ist dann so wie wenn man in ein Excel Sheet eine CSV Datei einliesst, die dann in Spalten angezeigt werden. Da kann man dann die ersten Felder wie das in einer Datenbank so üblich ist miteinander verknüpfen … weitere Felder werden dann einfach hinten dran gehängt.

Wenn man das VCF Format nutzt, könnte man sogar die Daten den Feldern zuordnen, in denen sie erscheinen müssen.

Das System könnte man auch so erweitern, dass da „Unterordner“ möglich werden … da findet man dann unter Telefon
-Telefon1
-Telefon2

So eine Datenbank müsste eigentlich ein gemanagtes Datenverzeichnis sein, was beliebig viele Unterordner hat.

SUPERCORP
-NAME
-BRANCHE
-Adresse
–STRASSE
–NUMMER
– LAGEPLAN BILD

Die grundlegenden Datenfelder sind dann für alle Datensätze gleich und können, wie das bei Datenbanken so üblich ist miteinander verknüpft werden. Der Nutzer, kann dann aber noch beliebige Felder (=Unterverzeichnisse) dran hängen.

Das wäre ziemlich genial und das muss in Zukunft auch zu einem gemanagten Dateiverzeichnis führen… was wie so eine erweiterbare Datenbank arbeitet.

Danke
brainstuff

In PostgreSQL gibt es den Datentyp HSTORE. In einer HSTORE-Spalte können beliebige Key/Value-Paare gespeichert werden, die auch in Queries verwendet werden können. Man legt die HSTORE-Spalte einmalig an und kann dann neue Keys hinzufügen ohne die Struktur der DB zu ändern. Das wird gerne verwendet, wenn man Daten aus Formaten ohne feste Spalten importiert, z.B. XML oder JSON. Man speichert dann die Daten, die jeder Datensatz enthält und über die effizient zugegriffen werden soll, in normalen Spalten und den Rest in einem HStore.

In Sqlite gibt es den Datentyp JSON, in dem man Daten im JSON-Format speichern und auswerten kann. Das bietet wohl ähnliche Möglichkeiten. In der Praxis kenne ich das allerdings nicht.