ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 15 Nov 2005, 15:22 
Offline
Obfuscator
Benutzeravatar

Registriert: 23 Okt 2005, 13:38
Beiträge: 571
Wohnort: Bern (CH)
Hi alle

Nehmen wir an, ich habe eine Tabelle "party_organisator" und eine Tabelle "users". Nun kann jeder Benutzer x-beliebig vielen Organisatoren angehören, weshalb ich eine many:many Beziehung erstellen will. Die Verknüpfungstabelle sähe dann so aus: "party_organisator_user"... Irgendwie unschön, es könnte jetzt ja auch eine Verknüpfungstabelle für die Tabellen "party" und "organisator_user" sein?! Ganz zu schweigen von X weiteren Möglichkeiten bei noch mehr Underscores in Tabellennamen (also eine Art karthesisches Produkt)?!
Wie soll ich dem Problem nun begegnen? Möglichst keine Uderscores in Tabellennamen verwenden?

Danke und Grüsse
Josh

_________________
www.josh.ch - Personal Web
www.incense.ch - Web development (to come)
www.ayom.com - Professionelles deutschsprachiges Webmaster Portal

"Eine Uhr, die stehen bleibt, zeigt 2x täglich die korrekte Uhrzeit an. Das ist besser als eine Uhr, die falsch geht." :-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2005, 00:25 
Offline
Obfuscator
Benutzeravatar

Registriert: 23 Okt 2005, 13:38
Beiträge: 571
Wohnort: Bern (CH)
Niemand eine Meinung dazu? Ich bin doch wohl nicht der einzige hier, der mit Tabellen arbeitet?! :twisted:

_________________
www.josh.ch - Personal Web
www.incense.ch - Web development (to come)
www.ayom.com - Professionelles deutschsprachiges Webmaster Portal

"Eine Uhr, die stehen bleibt, zeigt 2x täglich die korrekte Uhrzeit an. Das ist besser als eine Uhr, die falsch geht." :-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2005, 09:47 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
jede allgemeine lösung dieses problems würde den typischen fall komplizierter machen. deshalb hat man sich wohl entschlossen, diese einfache variante zu wählen.

convention over configuration - oder, frei nach Larry Wall: Make simple things simple and complex things possible.

was du vorhast, ist eben "complex". "possible" ist es in Rails, indem du den namen der tabelle einfach selber angibst:


1
2
3
4
5
6
7
8
9
10
class PartyOrganisator < ActiveRecord::Base
UserJoinTableName = 'party_organisators_whynottryaholidayinswedenthisyear_users'
has_and_belongs_to_many :users,
:join_table => UserJoinTableName
...
# ---
class User < ActiveRecord::Base
has_and_belongs_to_many :party_organisators,
:join_table => PartyOrganisator::UserJoinTableName
...
der name sollte natürlich in einer konstante stehen (DRY), die kannst du definieren, wo du magst.

Rails-API-Doc hat geschrieben:
Associates two classes via an intermediate join table. Unless the join table is explicitly specified as an option, it is guessed using the lexical order of the class names. So a join between Developer and Project will give the default join table name of "developers_projects" because "D" outranks "P".
http://api.rubyonrails.com/classes/Acti ... ml#M000467
habtm erhebt also gar keinen anspruch darauf, immer den richtigen namen zu wählen.

im übrigen frage ich mich, ob es überhaupt notwendig ist, hier einfluss zu nehmen. ja, der name ist mehrdeutig - aber wer sagt denn, dass die DB selbsterklärend sein muss? für die doku bist du sowieso selbst zuständig. und solange du nicht noch eine JoinTable Party <-> OrganisatorUser in derselben applikation anlegst (wer würde das wollen?), ist alles in ordnung.

wieso eigentlich nicht so?

1
2
class Party
has_one :organisator, :class_name => User.name # besser als 'User', da implizit

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Zuletzt geändert von murphy am 22 Nov 2005, 09:55, insgesamt 3-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2005, 09:49 
Offline
Obfuscator
Benutzeravatar

Registriert: 12 Sep 2003, 11:18
Beiträge: 509
Wohnort: Aachen
Bei mir haben die Kreuzreferenztabellen immer ein 'to' oder ein '2' im Namen.
Also z.B. PARTYORGANISATOREN_TO_USERS oder party_organisatoren2users.
Da kann man dann schon am Namen sehen, was da wem zugeordnet wird.
Außerdem verwende ich die Reihenfolge, die (hoffentlich 8-)) später die meistgebrauchte ist (statt organisatoren2users kann man ja auch users2organisatoren sagen).

Ob man Unterstriche verwendet oder nicht ist Geschmackssache - oder bei Entwicklungsteams Vereinbarungssache. Ich persönlich mag z.B. die CamelCase Schreibweise (keine Unterstriche, dafür aber jeder Anfangsbuchstabe eines Wortes groß geschrieben: 'meineTolleFunktion()') überhaupt nicht, muss sie aber in einigen Projekten verwenden, weil alle das tun.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2005, 12:38 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
??? Ist das jetzt versehentlich in Off-Topic statt in Rails gelandet oder verstehe ich irgendetwas wesentliches nicht?

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Nov 2005, 23:46 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
korrekt, WoNáDo - hierhin gehört das.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 00:11 
Offline
Obfuscator
Benutzeravatar

Registriert: 23 Okt 2005, 13:38
Beiträge: 571
Wohnort: Bern (CH)
Danke für die Infos.

Zitat:
Bei mir haben die Kreuzreferenztabellen immer ein 'to' oder ein '2' im Namen


Das hätte ich eben auch nur logisch gefunden. Klar - je einfacher, desto besser. Aber ein zu kurzer Blick kann längerfristig halt zum Problem werden.

Hab mich tatsächlich auch gewundert, wieso das Topic plötzlich im Offtopic Forum gelandet ist... deshalb auch meine "Reaktivierungsantwort"... :?

_________________
www.josh.ch - Personal Web
www.incense.ch - Web development (to come)
www.ayom.com - Professionelles deutschsprachiges Webmaster Portal

"Eine Uhr, die stehen bleibt, zeigt 2x täglich die korrekte Uhrzeit an. Das ist besser als eine Uhr, die falsch geht." :-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 00:14 
Offline
Obfuscator
Benutzeravatar

Registriert: 12 Sep 2003, 11:18
Beiträge: 509
Wohnort: Aachen
Einspruch, euer Ehren!

Wenn das Thema direkt unter RoR gepostet worden wäre, hätte ich es gar nicht gelesen.
Hier geht es mMn. um die Benamsung von Datenbanktabellen. Solche kann man zwar mit RoR weiterverarbeiten, aber ebensogut mit ganz anderen Sachen wie zB. OOo.
Deswegen finde ich, dass "OffTopic" dafür genau der richtige Ort ist/war: das hat nichts mit Ruby an und für sich zu tun, sondern mit Datenbankdesign.
Dass man das zufällig mit Ruby und RoR verwursten kann ist dabei nur ein netter Nebenaspekt. Also bitte dort lassen, wo Josh es ursprünglich haben wollte - schon allein, damit ich es wiederfinde 8-)

Gruß
pi


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 00:36 
Offline
Ex-Admin
Benutzeravatar

Registriert: 12 Mai 2003, 18:49
Beiträge: 890
Wohnort: Kiel
Moin!

Ich lass es jetzt mal so, aber da ich die Sache so wie pi sehe, hatte ich es aus dem RoR ins Off-Topic geschoben. ;)

iGEL

_________________



# Kein Kommentar!!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 04:16 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
oh, dann war das ein missverständnis. egal, lassen wir es jetzt hier.

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 12:18 
Offline
Obfuscator
Benutzeravatar

Registriert: 23 Okt 2005, 13:38
Beiträge: 571
Wohnort: Bern (CH)
Naja, jedenfalls lag das Topic in Offtopic über eine Woche unbeachtet, und jetzt hagelt es geradezu Antworten (wenn auch nicht alle Fragen bezogen)... :P

_________________
www.josh.ch - Personal Web
www.incense.ch - Web development (to come)
www.ayom.com - Professionelles deutschsprachiges Webmaster Portal

"Eine Uhr, die stehen bleibt, zeigt 2x täglich die korrekte Uhrzeit an. Das ist besser als eine Uhr, die falsch geht." :-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23 Nov 2005, 12:23 
Offline
Geselle
Benutzeravatar

Registriert: 29 Mär 2005, 19:03
Beiträge: 198
Naja in Offtopic war es natürlich auch richtig, da für Offtopic offtopic und somit doch ontopic. :D

_________________
Every OS sucks!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

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


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: