Antwort
 
Themen-Optionen Thema durchsuchen
Alt 27.02.2007, 16:04 Nach oben    #1
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard [MySQL4] Primary Key zeitgleich Foreign Key

Ich hab hier folgende Tabellendefinition (die auch funktioniert)
(verfremdet da firmenintern)
sql Code:
  1. CREATE TABLE  `db`.`table` (
  2.   `Spalte1` bigint(20) NOT NULL DEFAULT '0',
  3.   `Spalte2` bigint(20) NOT NULL DEFAULT '0',
  4.   `Spalte3` int(11) NOT NULL DEFAULT '0',
  5.   PRIMARY KEY  (`Spalte2`,`Spalte3`),
  6.   KEY `...` (`Spalte2`),
  7.   KEY `...` (`Spalte1`),
  8.   CONSTRAINT `.....` FOREIGN KEY (`Spalte2`) REFERENCES `table2` (`id`),
  9.   CONSTRAINT `....` FOREIGN KEY (`Spalte1`) REFERENCES `table1` (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Kann mir jemand erklären, wie ein Primärschlüssel zeitgleich ein Fremdschlüssel sein kann?
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009

Geändert von WarrenFaith (27.02.2007 um 16:30 Uhr)
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 16:10 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hm, ich bin ja nicht wirklich fit in Sachen SQL-Theorie, allerdings würde ich in diesem Fall fragen: "Warum sollte das nicht gehen?"

Der PRIMARY_KEY ist ja zusammengesetzt aus "spalte2" und "spalte3", so dass der FOREIGN_KEY ja durchaus mehrfach in der Tabelle vorkommen kann. Er wird ja nur zum PRIMARY_KEY in Verbindung mit dm Wert aus "spalte3".

Ich sehe wie gesagt gar keinen Grund, warum das nicht gehen sollte.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 16:36 Nach oben    #3
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

hm... stimmt, die kombi ist der primary key...
hab da wohl falsch gedacht.

trotzdem schon interessant... ich werd da mal genauer nachforschen, zumal ich keine ahnung mehr hab was constraint war...
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 20:57 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 159
Standard

Also ich gehe davon aus, dass mit dem CONSTRAINT eine verkappte View erzeugt wird, mit der Updates und Deletes u.U. optimiert wird. Das ganze scheint eine Engine-nahe Lösung zu sein. Grundsätzlich gilt dabei, dass hier ein Wert aus der Basis-Tabelle genutzt wird, um die Spalte(n) in den sekundär-Tabellen mit zu adressieren, um zugehörige Daten vor allem mit zu löschen. Sehr gut beschrieben auch unter http://dev.mysql.com/doc/refman/5.0/...nstraints.html .

Gruß,
Jumper, the II.
JumperII ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[C/PHP -> mcrypt] Zu kurzer Key WarrenFaith Sonstige Programmiersprachen 19 03.04.2007 11:03


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


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45