Schema für CMS in Rails
Von: Steffen Beyer (sbeyer@reactor.de) [Profil]
Datum: 11.07.2007 16:57
Message-ID: <20070711165720.cea5ab00.sbeyer@reactor.de>
Newsgroup: de.comp.lang.ruby de.comp.datenbanken.misc
Datum: 11.07.2007 16:57
Message-ID: <20070711165720.cea5ab00.sbeyer@reactor.de>
Newsgroup: de.comp.lang.ruby de.comp.datenbanken.misc
Moin, ich weiß nicht, ob solche Entwurfsfragen hier angebracht sind, aber ich konnte keine passenderen Gruppen finden. Es geht um ein System zur Pflege von Webseiten. Als DBMS kommt PostgreSQL zum Einsatz, als Framework Ruby on Rails. Jede Webseite besteht aus mehreren Elementen (z.B. Text, Bild, Liste, Container f. weitere Elemente). Es wird auch Elemente geben, die mehrere Container für weitere Elemente besitzen. Wie lässt sich diese Verknüp fung am elegantesten in eine DDL übertragen? Ich hatte mir überlegt, eine spezielle Join Table zu verwenden, in der die Einträge gruppiert sind. Auf diese Gruppen-ID wird dann von Seiten und Elementen verwiesen. Der Zeiger auf ein bestimmtes Element wird durch einen ID-String gebildet, aus dem sich eindeutig der Element- und damit der Tabellenname bilden lässt, sowie der entsprechenden numerischen ID. Das würde dann etwa so aussehen: Webseite: create_table :pages do |t| t.column :parent_id, :integer, :null => false t.column :position, :integer, :null => false t.column :container_group, :integer t.column :page_title, :string [...] t.foreign_key :parent_id, :pages, :id, :on_update => :restrict, :on_delete => :restrict end Container: create_table :containers do |t| t.column :group, :integer, :null => false t.column :position, :integer, :null => false t.column :element_type, :string(64), :null => false # z.B. 'complex_element' t.column :element_id, :integer, :null => false end add_index :containers, :group add_index :containers, [ :element_type, :element_id ] Element: create_table :complex_elements do |t| t.column :headline, :string t.column :body, :text t.column :images_container_group, :integer t.column :links_container_group, :integer end Das Rails-ORM müsste ich dann erweitern, um mit dieser Art der Verknüpfung arbeiten zu können. Wäre schön, wenn das jemand kommentieren würde. Xpost. Grüße, -- Steffen Beyer <sbeyer@reactor.de> GnuPG key fingerprint: CA00 1611 242B 89D4 E643 E235 05F3 7689 DD3E EB26 Public key available upon request or at http://wwwkeys.de.pgp.net[ Auf dieses Posting antworten ]
Antworten
- Johannes Held (11.07.2007 23:25)
- Steffen Beyer (12.07.2007 01:08)
- Josephine Hunter (12.07.2007 01:43)
- Steffen Beyer (12.07.2007 02:28)
- Josephine Hunter (12.07.2007 05:39)
