Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-MasterDetail Beziehung herstellen (https://www.delphipraxis.net/58495-sql-masterdetail-beziehung-herstellen.html)

sniper_w 7. Dez 2005 21:26

Datenbank: mySQL • Version: 4.0.23 • Zugriff über: Mit dem Programm "MySQL-Front" (auch Delphi+Zeos)

SQL-MasterDetail Beziehung herstellen
 
Es gibt 2 Tabellen ( type = myISAM ):
Master:
1. Kunden ( ID = int(3)unsigned primary auto_increment, Name=varchar 30, Vorname=varchar 30 )
Detail:
2. Bestellungen ( ID = int(3)unsigned primary auto_increment, ArtNr=varchar 30, Menge=int, Preis=double )

Jetzt würde ich gerne zur Tabelle "Bestellungen" noch ein Feld hinzufühgen, KundenID = forign key (Kunden.ID). Wie ? Gehe ich irgendwie falsch vor? Wird dadurch eine Master/Detail Beziehung hergestellt ? Wenn nicht, wie denn dann ? Danke ;).

marabu 8. Dez 2005 08:16

Re: SQL-MasterDetail Beziehung herstellen
 
Moin.

Zitat:

Zitat von sniper_w
Jetzt würde ich gerne zur Tabelle "Bestellungen" noch ein Feld hinzufühgen, KundenID = forign key (Kunden.ID). Wie ?

So etwa könnte das aussehen:

SQL-Code:
CREATE TABLE Bestellungen (
  Id INT(3) UNSIGNED PRIMARY AUTO_INCREMENT,
  ArtNr VARCHAR (30),
  Menge INT,
  Preis DOUBLE,
  KundenId INT,
  INDEX xKunden (KundenId),
  FOREIGN KEY (KundenId) REFERENCES Kunden(Id)
)
Eine Master-Detail-Beziehung ist ein konzeptionelles Konstrukt - du kannst versuchen es in der Datenbank angemessen nachzubilden, aber das RDBMS weiß nicht was es bedeutet.

Grüße vom marabu

dfried 8. Dez 2005 09:10

Re: SQL-MasterDetail Beziehung herstellen
 
Wenn ich mich richtig erinnere sind Foreign Keys unter MySQL allerdings nur bei Tabellen vom Typ INNODB unterstützt. Bei MyIsam kann man das zwar angeben, aber die Referentielle Integrität wird nicht geprüft.

Jelly 8. Dez 2005 10:08

Re: SQL-MasterDetail Beziehung herstellen
 
Zitat:

Zitat von dfried
Wenn ich mich richtig erinnere sind Foreign Keys unter MySQL allerdings nur bei Tabellen vom Typ INNODB unterstützt. Bei MyIsam kann man das zwar angeben, aber die Referentielle Integrität wird nicht geprüft.

Das stimmt.

Die Frage ist ja aber, er will eine Spalte hinzufügen, und nicht gleich die Tabelle neu erstellen:
SQL-Code:
alter table Bestellungen
Add KundenID int NULL

marabu 8. Dez 2005 10:29

Re: SQL-MasterDetail Beziehung herstellen
 
Hi Tom,

dann fehlt noch:

SQL-Code:
ALTER TABLE Bestellungen
  ADD FOREIGN KEY (KundenId) REFERENCES Kunden(Id)
marabu

Jelly 8. Dez 2005 10:39

Re: SQL-MasterDetail Beziehung herstellen
 
Yupp... Aber weil das unter MyISAM eh nichts ändert :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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