Empfehlungen: Erweiterte Suche

Überraschung - Verknüpfte Primärschlüssel

Planung und Aufbau von Datenbankstrukturen, MySQL-Queries

Überraschung - Verknüpfte Primärschlüssel

Beitragvon havanna » Mo 13. Apr 2009, 22:23

Hallo,
da es in dieser Rubrik noch keinen Eintrag gibt :o und ich selbst gerade die Tage eine Überraschung erlebte, nützte ich die Gelegenheit einen ersten Beitrag zu erfassen.
Meine Überraschung bezieht sich darauf das ich feststellen musste, dass cakePHP keine verknüpften Tabellenschlüssel unterstützt (composite primary).
In meinem Beispiel habe ich eine Tabelle immobilien. Der Primärschlüssel ist die Objektnummer. Dann gibt es eine Tabelle texte. Eine 1:n Beziehung. Der Primärschlüsssel der Tabelle texte war bisher "objektnummer" "textart".
Als ich dann einen update versuchte, war ich zuerst etwas überrascht, dass alle Texte auf einmal den gleichen Inhalt hatten. Die Ursache liegt eben darin, dass cakePHP keine verknüpften Primärschlüssel unterstützt.
Etwas dreist, finde ich z.T. die Reaktion des Cake-Teams auf entsprechende Kritik: https://trac.cakephp.org/ticket/2811
Sorry, aber ich mache jetzt seit 15 Jahren Datenbankanwendungen. Und die Verwendung verknüpfter Tabellenschlüssel ist in der Datenbank-Normalisierung gang und gebe.
Auch SAP - sicher kein low-budget-Programm - verwendet durch die Bank verknüpfte Primärschlüssel. Insbesondere was die "Nachteile" betrifft, die das Cake-Team darzustellen versucht (Geschwindigkeit) sind gerade in allen Lehrbüchern, die ich zum Thema Datenbank-Design habe, gerade anders dargestellt. Deshalb spreche ich dem Cake-Team hier auch die Kompetenz ab. Damit müssten alle Lehrbücher der letzten 15 Jahre neu aufgelegt werden. Ebenso die Dokumentation zu allen Datenbanken (Oracle, MS SQL, Interbase, MySQL, etc.).
Auch interessant in dem oben verlinkten Ticket, finde ich die Berufung auf Ruby. Meiner Meinung nach ein Armutszeugnis. Diese Reaktion sagt auch "cakePHP ist nur eine andere Implementierung des Ruby-Konzepts".

Ciao Thomas

P.S. Hoffe ja, dass das mal einer der "cake-Gurus" liest. Leider fehlt um Cake eine Art Diskussionsplattform.
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon aioon » Sa 18. Jul 2009, 10:56

MyISAM oder InnoDB?

außerdem hast du es inzwischen rausgefunden woran es lag?
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon havanna » Sa 18. Jul 2009, 21:39

aioon hat geschrieben:MyISAM oder InnoDB?

außerdem hast du es inzwischen rausgefunden woran es lag?

Hallo Alex,
Was heißt: ...woran es lag? Es ist einfach so. MyISAM übrigens - aber das wir wohl keinen Unterschied machen da das Cake-Team selbst sagt, dass es keine verknüpften Primärschlüssel unterstützt. Dazu müsste man die Modell-Klasse umstricken.
Es bleibt also nichts anderes übrig, als eine Spalte id einzufügen und diese als Primärschlüssel zu definieren.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon aioon » Sa 18. Jul 2009, 21:48

Vielen Dank für die Antwort!

Gruß
Alex
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon Chapi » Fr 6. Aug 2010, 21:08

Hallo

Bin neu im Forum und hoffe dass ich hier am richtigen Ort reinschreibe.
Ich habe folgendes Problem und zwar bei diesem Query:
Code: Alles auswählen
SELECT `Room`.`id`, `Room`.`hotel_id`, `Room`.`price`, `Room`.`number`, `Room`.`size`, `Hotel`.`id`, `Hotel`.`name`, `Hotel`.`number_of_room` FROM `rooms` AS `Room` LEFT JOIN `hotels` AS `Hotel` ON (`Room`.`hotel_id` = `Hotel`.`id`)  WHERE 1 = 1   ORDER BY `id` ASC

Dieser aufruf sollte mir alle Daten die in der Tabelle rooms ist ausgeben.
der Fehler der kommt ist folgender:
SQL Error: 1052: Column 'id' in order clause is ambiguous

Ich versuche kurz mal zu beschreiben um was es geht. Es soll eine HomePage (Hotel) werden, durch welche man online buchen kann.
Die Datenbankrelation ist 1:n und zwar ein Hotel hat mehrere Zimmer.
Da ich mit CakePHP erst begonnen habe gehe ich eigentlich nach Buch und schreibe den Code dann für meine Bedürfnisse um.

Die Relationen habe ich in den entsprechenden models eingetragen.

Hoffe jemand kann mir helfen, für die Hilfe oder sogar Lösung bedanke ich mich schon einmal.
Wenn jemand noch mehr Code braucht nur sagen.

Danke
Chapi
 
Beiträge: 13
Registriert: Mi 4. Aug 2010, 22:08
CakePHP-Version: 1.2.8

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon Flo » Sa 7. Aug 2010, 08:51

eigentlich hättest du dafür ein neues Thema aufmachen sollen ;)

aber ich denke du hast options gesetzt bei deiner Abfrage, und ambiguous bedeutet einfach das der schlüssel 'id' auf mehrere Felder deiner Abfrage zutreffen kann. auf Room.id und Hotel.id, du musst dir halt eins von beidem aussuchen nachdem sortiert wird.
Flo
 
Beiträge: 85
Registriert: Mi 11. Jun 2008, 20:48
Wohnort: Bielefeld
CakePHP-Version: 1.3
OS: Mac OSX 10.6

Re: Überraschung - Verknüpfte Primärschlüssel

Beitragvon Chapi » Sa 7. Aug 2010, 09:22

danke flo es funktioniert
ok werde das nächste mal ein neues Thema anfangen
nochmals danke
Chapi
 
Beiträge: 13
Registriert: Mi 4. Aug 2010, 22:08
CakePHP-Version: 1.2.8


Zurück zu Datenbanken / MySQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste