rose_auto_create_model.pl: Relationship-Namen anhand der Spaltennamen mappen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 25 Jun 2014 09:31:34 +0000 (11:31 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 25 Jun 2014 09:39:07 +0000 (11:39 +0200)
commit0d33a925545f60de3962329f62df61b5b99f925d
tree3ddddd3821218c06b0037842886b06008444e1a8
parentdf601bd3fcca2c121c54f489e504dd676da75876
rose_auto_create_model.pl: Relationship-Namen anhand der Spaltennamen mappen

Bisher wurde das Umbenennen der generierten Relationships anhand des von
Rose vergebenen Namens der Relationship vorgenommen. Das ist
problematisch, weil diese wiederum von der Reihenfolge abhängen, in der
die Fremdschlüsseldefinitionen von der Datenbank zurückgeliefert werden.

Konkretes Beispiel: Tabelle »follow_up_access« mit den Spalten »who« und
»what«, die beide Fremdschlüssel auf employee sind.

Rose benennt die erzeugten Relationships nach dem Klassennamen
derjenigen Tabelle, auf die die Schlüssel verweisen. Tabelle »employee«
→ Klasse »SL::DB::Employee« → Default-Relationshipname »employee«.

Die erste von der Datenbank gemeldete Fremdschlüsseldefinition bekommt
nun den Namen »employee«. Die zweite sollte diesen ebenfalls bekommen,
aber da der schon vergeben ist, bekommt sie das Suffix »_obj«, ergo
»employee_obj«. Soweit, so gut. Ändert sich nun aber die Reihenfolge, so
werden die Namen genau umgekehrt herum vergeben.

Die Umbenennung anhand des Tripels <Domäne, Tabelle, Spaltennamen>
hingegen ist immer eindeutig.
scripts/rose_auto_create_model.pl