Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Allgemeine Frage zu Datenbanken (https://www.delphipraxis.net/98494-allgemeine-frage-zu-datenbanken.html)

Assertor 28. Aug 2007 09:51

Datenbank: Midas oder Firebird • Zugriff über: steht noch nicht fest

Allgemeine Frage zu Datenbanken
 
Hallo,

ich bin grad am Überlegen, ob ich für ein Projekt mich in Firebird embedded und Zeos ODER in TClientDataSet einarbeite.

Gibt es beim TClientDataSet (Midas) überhaupt die Möglichkeit, SQL Abfragen zu stellen?

Angenommen ich habe zwei Tabellen

1. Artikel
----------
ID, Name, Bestandteile

2. Bestandteile
---------------
ID, Name

Wie kann ich diese "Verknüpfen"? Ich möchte z.B. das wenn ein Bestandteil gelöscht wird, die Verknüpfung automatisch in Artikel auch rausfliegt. Muß man das bei allen Verknüpfungen selbst programmieren?

Gibt es ein gutes und aktuelles Buch zu TClientDataSet und/oder Zeos/Firebird?

Gruß winkel79

mkinzler 28. Aug 2007 10:00

Re: Allgemeine Frage zu Datenbanken
 
Du kannst ja beides verwenden. Ein TClientDataSet ist ja eigentlich nur ein lokaler cache.

WIng2005 28. Aug 2007 10:12

Re: Allgemeine Frage zu Datenbanken
 
SQL-Bücher gibt es zu hauf, Firebird gibts Tuturials... zB.: http://www.dsdt.info/tutorials/zeosfirebird/?page=1

SQL habe ich viel via Access gelernt. Viele Tabellen verknüpft und dann den SQL-Code angeschaut... so läßt es sich ganz gut lernen (finde ich). Auch hierzu gibts massig Tutorials...

MFG
Steffen

HaJo 28. Aug 2007 18:06

Re: Allgemeine Frage zu Datenbanken
 
Hallo,

ich weiß ja nicht was Du mit "Verknüpfungen" meinst - in einer "besseren" SQL-Datenbank regelt so etwas die Datenbank-Tabelle selber indem sie Trigger verwendet.

Dazu ein Beispiel einer Vorgangs-Tabelle und einer Positionen-Tabelle:

Ein Vorgang, z.b. eine Rechnung kann beliebig viele Positionen haben.

Wird nun ein Vorgang gelöscht - wird über den Trigger "Before delete" jede zum Vorgang gehörende Position gelöscht.

Auf diese Art und Weise muss ich dafür keine Zeile Quelltext vergeuden :-)

mfg
Jo

TBx 28. Aug 2007 20:21

Re: Allgemeine Frage zu Datenbanken
 
@HaJo: Ich verschwende für diesen Fall auch keine Zeile Code in einem Trigger, ich verwende einen ForignKey und setzte das Delete auf Cascading :)

Gruß

onlinekater

Hansa 28. Aug 2007 21:09

Re: Allgemeine Frage zu Datenbanken
 
Etwas zu knapp. Du brauchst auf jeden Fall die foreign keys. Es muss ein Grundgerüst für die Daten her. Die Regeln müssen da rein. Also auch, was alles an Abhängigkeiten gelöscht werden soll. Gehe deshalb in IBExpert hin und lege diese Dinge fest.

Im Quelltext der DB ist dann z.B. so etwas zu sehen :

SQL-Code:
ALTER TABLE ARTIKEL ADD CONSTRAINT FKBESTANDTEIL_ARTIKEL FOREIGN KEY (ID_BESTANDTEIL) REFERENCES BESTANDTEIL (ID) ON DELETE CASCADE;

TBx 28. Aug 2007 21:15

Re: Allgemeine Frage zu Datenbanken
 
@Hansa: Da hast DU mit anderen Worten das gleiche beschrieben wie ich.
Ich denke nur, Du hast in dem Beispiel das Pferd von der falschen Seite her aufgezäumt, der ForeignKey wird in Artikelbestandteil angelegt und referenziert Artikel :)

Gruß

onlinekater

Hansa 28. Aug 2007 22:26

Re: Allgemeine Frage zu Datenbanken
 
Könnte sein, aber der soll sein Programm schon selber schreiben. :mrgreen:

mkinzler 29. Aug 2007 05:36

Re: Allgemeine Frage zu Datenbanken
 
Zitat:

Zitat von Hansa
Könnte sein, aber der soll sein Programm schon selber schreiben. :mrgreen:

Du findest auch immer eine Ausrede

Assertor 16. Sep 2007 14:45

Re: Allgemeine Frage zu Datenbanken
 
Hallo,

erstmal Danke für Eure zahlreichen Antworten.

Zitat:

Zitat von Hansa
Könnte sein, aber der soll sein Programm schon selber schreiben. :mrgreen:

Also, ich bin ja
Zitat:

der
. Habe ich irgendwo gefragt, ob mir jemand Quellcode postet oder meine Arbeit macht? Ich schreibe doch extra, daß ich Überlegungen anstelle und Bücher suche. Also ich lese es oft umgekehrt hier im Forum, da fragt jemand frech nach fertigem Source und stellt sich dumm - und bekommt dann die Lösung von netten DPlern.

Ich frag nett und schon bin ich nur noch "der" ;)

Tse. Gut, ich suche mal in den USA nach Büchern. Die DSDT und DP Tuts hab ich schon durch.

Bis bald,
Gruß winkel79


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Seite 1 von 2  1 2      

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