Hi,
ich bin in der Planung für ein Projekt, dort möchte ich die Datenbankstruktur so klein wie möglich halten, deshalb denke ich über folgendes Konstrukt nach
In "entries" soll jeglicher Hauptinhalt gespeichert werden, bezugnehmend darauf gibt es für den "entries"-table noch einen "entries_attributes"-table. In dem werden zusätzliche Informationen abgelegt.
Ein kleines Beispiel:
Pages haben im "entries"-table einen namespace "app.page". In der Spalte "name" wird der Name der Seite und in "content" der Hauptinhalt gespeichert.
Wenn ich jetzt zb. eine SEO url der Page hinzufügen will, mache ich das über "entries_attributes". Dort wäre der "namespace" "app.page.seourl", in der Spalte "name" stünde "url" und in der spalte content wäre die eigentliche URL. Die Spalte "name" würde bei "entries_attributes" also für die Identifikation dienen (Namen der Spalten sind nicht final ).
Messages haben im "entries"-table einen namespace "foobar.message".
Snippets haben im "entries"-table einen namespace "foobar.snippets".
Ist es, auch bei großen Datenmengen, effizient so zu arbeiten oder wäre ein eigener "entry"-table sinnvoller?
Wie sehr bremst das "WHERE namespace = ?".
Der "enties_attributes"-table kann je Eintrag sehr viele Unterpunkte beinhalten, der Abruf geschieht entweder über die "WHERE entry_id = ?" oder über "WHERE entry_id = ? AND namespace = foobar.page.seourl", wenn ich nur bestimmte attribute hole.
ich bin in der Planung für ein Projekt, dort möchte ich die Datenbankstruktur so klein wie möglich halten, deshalb denke ich über folgendes Konstrukt nach
Code:
// tablename: entries
id | name | namespace | content
// tablename: entries_attributes
id | enty_id | name | namespace | content
In "entries" soll jeglicher Hauptinhalt gespeichert werden, bezugnehmend darauf gibt es für den "entries"-table noch einen "entries_attributes"-table. In dem werden zusätzliche Informationen abgelegt.
Ein kleines Beispiel:
Pages haben im "entries"-table einen namespace "app.page". In der Spalte "name" wird der Name der Seite und in "content" der Hauptinhalt gespeichert.
Wenn ich jetzt zb. eine SEO url der Page hinzufügen will, mache ich das über "entries_attributes". Dort wäre der "namespace" "app.page.seourl", in der Spalte "name" stünde "url" und in der spalte content wäre die eigentliche URL. Die Spalte "name" würde bei "entries_attributes" also für die Identifikation dienen (Namen der Spalten sind nicht final ).
Messages haben im "entries"-table einen namespace "foobar.message".
Snippets haben im "entries"-table einen namespace "foobar.snippets".
Ist es, auch bei großen Datenmengen, effizient so zu arbeiten oder wäre ein eigener "entry"-table sinnvoller?
Wie sehr bremst das "WHERE namespace = ?".
Der "enties_attributes"-table kann je Eintrag sehr viele Unterpunkte beinhalten, der Abruf geschieht entweder über die "WHERE entry_id = ?" oder über "WHERE entry_id = ? AND namespace = foobar.page.seourl", wenn ich nur bestimmte attribute hole.