Empfehlungen: Erweiterte Suche

1:0 Relation wie darstellen ?

Fragen zur Konzeptionierung und womit man am besten anfäng? Hier rein...

1:0 Relation wie darstellen ?

Beitragvon derAngler » Fr 20. Aug 2010, 12:59

Hallo,

ich arbeite mich gerade in CakePHP ein und versuche mich dafür an einem kleinen Projekt.
Mein Problem ist nun die korrekte Relationen zwischen 2 Tabellen herzustellen.

So wie ich es verstanden habe kennt CakePHP 4 x Arten von Relationen:
1:1 (hasOne)
1:n (hasMany)
n:1 (belongsTo)
n:m (hasAndBelongsToMany)

Ich brauche aber eine 1:0 Relation.
Als Beispiel nehmen wir die Tabelle "Objekte" in denen die Stammdaten zu diversen Objekten hinterlegt sind. Die zweite Tabelle nennen wir mal "Geldwechsler". In dieser sind dann alle Stammdaten zu den diversen Geldwechslern hinterlegt.
So, jetzt ist es so, das zwar jedem Geldwechsler ein Objekt zugeordnet ist, aber nicht jedem Objekt ist einen Geldwechsler zugeordnet (da nicht in jedem Objekt ein Geldwechsler steht, sondern nur in einem Teil davon).
Man kann also sagen das ein Eintrag in der Tabelle "Geldw." immer mit genau einem Eintrag in der Tabelle "Obj." verknüpft sein muss, jedoch muss ein Eintrag in der Tabelle "Obj." nicht mit einem Eintrag in der Tabelle "Geldw." verknüpft sein (kann es aber).
Soweit ich mich in die Datenbank-Programmierung eingelesen habe kommt hier eine besondere Form der 1:1-Relation zum Tragen, eben besagte 1:0-Relation.

Nur wie bilde ich das ganze jetzt in CakePHP ab?
derAngler
 
Beiträge: 3
Registriert: So 13. Jun 2010, 18:32

Re: 1:0 Relation wie darstellen ?

Beitragvon mbrod » Fr 20. Aug 2010, 15:39

In der Tabelle Geldwechsler muss es ein Feld object_id geben, welches die Relation zum Ortsobjekt herstellen kann. Klar ist, dass im Model Geldwechsler die Variable "belongsTo" definiert werden muss, um über den GeldwechslerController auf das Ortsobjekt zugreifen zu können.

Wenn vom OrtsobjektController auf die Daten des eventuell vorhandenen Geldwechslers zugegriffen werden soll, muss im OrtsobjektModel die Variable "hasOne" definiert werden. (Oder auch "hasMany", denn könnte es nicht auch mehrere Geldwechsler in einem Gebäude geben?). Wenn in dem Gebäude kein Geldwechsler steht, gibt es keinen Geldwechsler mit dieser object_id und folglich sind die zugehörigen Datenfelder dieser Relation einfach leer. Vielleicht ist so die 1:0 Relation definiert, was ich aber nicht weiß. Ich sehe das jetzt einfach mal so, wie ich die von dir geschilderten Verhältnisse auf CakePHP übertragen sehe.
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: 1:0 Relation wie darstellen ?

Beitragvon euromark » Fr 20. Aug 2010, 19:43

1:0 is quatsch mit soße
sowas gibts nicht, bzw ist lediglich ein sonderfall von 1:n bzw 1:1 und muss nicht extra modeliert werden

lediglich die validierungsregeln müssen dies in bezug auf gültigkeit beachten
aber das is ja kein hexenwerk

du musst dir nur im klaren sein, obs nun 1:1 (eines auf der einen kann nur maximal(!) eines auf der anderen seite haben - oder eben gar nicht) oder 1:n (eines auf der einen seite kann 0, eines oder auf mehr als nur eins - auf der anderen seite haben) ist.
euromark
 
Beiträge: 617
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows


Zurück zu Konzeption und Vorgehensweise

Wer ist online?

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

cron