Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank für Verwaltung + generelle Frage (https://www.delphipraxis.net/65053-datenbank-fuer-verwaltung-generelle-frage.html)

Thorben86 11. Mär 2006 16:49

Datenbank: woher soll ich das wissen • Zugriff über: hängt von der DB ab

Datenbank für Verwaltung + generelle Frage
 
Hi,

ich hab vor ne art Verwaltung zu schreiben, von der Größe her denke ich nicht, dass es sich hierbei um Tausende Einträge handelt :) .
Nun muss ich die einträge ja auch irgendwie speichern, wo nun mein Problem liegt.

Die Datenbank sollte auf dem Desktop-PC liegen und sie sollte mit dem Programm mitlieferbar sein.
Damit fallen Sachen wie MySQL oder BDE ja raus.

Habe bisher außer einer kleinen DB über MyBase noch nicht mit Datenbanken gearbeitet.
So weis ich nicht, ob es mit den meisten Datenbanken möglich ist, dass ich z.B. zu einem Eintrag eine Dynamische anzahl aus Elementen eines Typs hinzufügen kann (siehe Code).

Soweit ich mich erinnern kann musste man bei der DB über MyBase die verfügbaren Felder anlegen und deren größe festlegen, somit wäre ja eine Dynamische Anzahl eines Feldes / Eintrag nicht möglich, oder?

Weitere frage: Wenn ich jetzt will, dass man z.B. bei Kategorie mehrere ausgewählt werden können, muss ich die dann durch durch ein trennzeichen in das eine feld schreiben, oder gibt es die möglichkeit dafür jeweils eins zu haben, also quasi ein array.

Ich hoffe ihr könnt mir hier ein paar Tipps geben, welche DB man dafür am besten sollte (sollte kostenlos sein). Über ne Ini-Datei dürfte es ja bei mehreren Einträgen irgendwann recht unpraktisch werden, oder? Bei xml weis ich auch nicht, in welchem Bereich das am besten eingesetzt wird.

MfG Thorben

Code:
Eintrag 1
  -Titel
  -Kategorie
  -Element[1]
    -Menge
    -Einheit
    -Name
  -Element[2]
    -Menge
    -Einheit
    -Name

...

Eintrag 17
  -Titel
  -Kategorie
  -Element[1]
    -Menge
    -Einheit
    -Name

Sharky 11. Mär 2006 17:22

Re: Datenbank für Verwaltung + generelle Frage
 
Hai Thorben86,

für kleine DB-Sachen verwende ich gerne die Absolute Database.

Das andere was Du möchtest hat weniger mit der verwendeten DB zu tun als vielmehr mit dem Aufbau deiner Tabellen.
Du musst also zwei Tabellen haben.
Code:
Tabelle_1
  ID : integer
  Titel : string
  kategorier : blubb

Tabelle_2
  ID : integer;
  fk_tabelle_1_id : integer // ForenKey auf Tabelle1
  menge : integer;
  einheit : blubb
  name : string
Wie Du siehst werden die Elemente in eine eigene Tabelle geschrieben. Über das Feld fk_tabelle_1_id ist dann die Verknüpfung zu den Hauptdaten gegeben.

mkinzler 11. Mär 2006 18:35

Re: Datenbank für Verwaltung + generelle Frage
 
Dafür würde sich jede Art von embedded-Datanbank eignen wie z.B. Firebird oder sqlite.

Thorben86 12. Mär 2006 12:36

Re: Datenbank für Verwaltung + generelle Frage
 
Vielen Dank schonmal, werde mich dann mal bzl dem Tabellenaufbau was schlauer machen.
So wie ich das verstanden hab hab ich dann z.B. beim ersten eEintrag
Code:
Tabelle_1
-ID
...

Tabelle_2
-fk_tabelle_1_id <-erstes element für tabelle_1
...
Tabelle_17
-fk_tabelle_1_id <-17. Element für tabelle_1 

und dann mach ich mit Tabelle 18 weiter?
Tabelle_18
-ID
demnach wäre der Tabellenname dann für die Barbeitung irrelevant, da ich ja nicht alle Tabellen umbenennen kann, wenn ich in z.B. ein element für tabelle 1 hinzufüge (oder Lösche?).
Also müsste ich alles über die ID bzw über die Keys laufen lassen, nur da stellt sich mir die frage, wie weis ich, wenn ich alle Elemente zu Eintrag 1 haben will, welche dazugehören, ohne alle durchzugehen.

Gibt es irgendwelche nennenswerte Unterschiede zwischen den 3 genannten Datenbanken? Sind ja alles Embedded- Datenbanken. Ist es z.B. möglich, dass ich zur laufzeit bestimte ausgewählte einträge in eine eigene Datenbank/ein neues Datenbank-FIle speichere, um die daten dann z.B. an einem anderen zu Client laden und in die eigentliche zu importieren?

Kennt ihr event. ein paar Tutorials diesbezüglich, die u.a. das Grundverständnis, wie z.B. den Tabellenaufbau erklären. Werd mir auf jedenvall nochmal bei DSDT die Datenbank-Reihe ansehen.

mkinzler 12. Mär 2006 12:45

Re: Datenbank für Verwaltung + generelle Frage
 
Sqlite ist eine reine embedded Datenbank. Fb embedded ist nur ein spezieller Client für FireBird-Server, welcher einene Server eingebaut hat; man kann somit einfach durch Umkonfigurieren auch auf externe FB-Server zugreifen.

Zitat:

Also müsste ich alles über die ID bzw über die Keys laufen lassen, nur da stellt sich mir die frage, wie weis ich, wenn ich alle Elemente zu Eintrag 1 haben will, welche dazugehören, ohne alle durchzugehen.
mit einer SQL-Abfrage
SQL-Code:
select * from Tabelle2 where fk_tabelle_1_id = 1;
liefert dir alle Einträge von Tabelle2 die mit dem Eintrag von Tabelle1 mit der ID 1 verknüpft sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz