Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Antwort
 
Themen-Optionen
Alt 27.02.2007, 16:04   Nach oben    #1
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.793
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

Geändert von WarrenFaith (27.02.2007 um 16:30 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 16:10   Nach oben    #2
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 16:36   Nach oben    #3
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.793
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
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.02.2007, 20:57   Nach oben    #5
JumperII
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 136
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen 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

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

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are 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 +2. Es ist jetzt 23:43 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

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