lars0816
2010-11-05, 02:24:36
Guten Abend,
erst einmal sorry für den sehr vagen Titel, ich habe leider keine Ahnung wie ich meine Frage präzise in einen Einzeiler packen kann.
Und zwar: Für ein privates Projekt baue ich derzeit ein System, was es erlauben soll, verschiedene Artikel mit Tags zu versehen. Die Tags ihrerseits sollen bewertet werden können, und zwar für jeden Artikel gesondert. Man stelle sich also ein System wie in Youtube vor, wo ein Artikel mit bestimmten Tags versehen ist, nur dass man auch neue Tags vergeben kann und die bestehenden Tags besser oder schlechter (nur für diesen Artikel!!) bewerten kann.
Mein Gedanke ist folgender...
Ich erstelle eine "Bewertungstabelle" mit folgenden Spalten:
id - Primärschlüssel pro Artikel
Artikel-id - zur Refernzierung auf die verschiedenen Teile des Inhalts des Artikels [integer]
Tags - Ein Array mit den verschiedenen Tag-Ids [array mit integern]
Bewertungen - ein array mit Bewertungen der Tags an Stelle 0-n [array mit integern]
Parallel dazu erstelle ich eine [I]"Tag-Tabelle", die sieht wie folgt aus:
id - Die Tag-IDs der anderen Tabelle, hier als Primärschlüssel
Tag-Text - Der Inhalt eines einzelnen Tags, z.B. "london", "lady gaga" oder sowas in die richtung [string]
Es müsste also jedes mal, wenn ein User ein noch nicht vorhandenes Tag eingibt, ein neuer Tag-Eintrag gemacht werden.
Meine Frage ist jetzt, ob dieser Ansatz Sinn macht. Ich müsste nun eigentlich für einen Artikel jedes Tag einwandfrei mit einer Bewertung verknüpfen können, indem ich das Tag an der Stelle x mit der Bewertung an der Stelle x verbinde, richtig? Irgendwie schmeckt mir die Lösung nicht ganz...
Ich habe allerdings noch einen alternativen Gedanken. Hier wird eine [I]"Artikelspezifische Tag-Tabelle" angelegt, die aus folgenden Spalten besteht:
id - Die Id eines Tags als Primärschlüssel [integer]
tag - der Text des Tags [string]
artikel-id - Die Id eines Artikels [integer]
bewertung - die bewertung des tags [integer]
Die oben zuerst genannte "Bewertungstabelle" würde dann zur Artikeltabelle, in der die Spalten "Tags" und "Bewertungen" wegfallen, die Verknüpfung erfolgt dann über die Artikel-Id.
Jetzt wo ich nochmal drüber nachdenke, gefällt mir der zweite Vorschlag eigentlich besser, weil man Arrays in großen Tabellen, wenn möglich, vermeiden sollte. Der Nachteil wäre dass die "artikelspezifische Tag-Tabelle" extrem groß werden könnte.
Was meint ihr, welcher Ansatz ist euer Favorit, auch hinsichtlich potenzieller Rechenzeit? Oder habt ihr noch einen besseren Vorschlag? Input ist sehr willkommen!
danke im Voraus,
Lars
erst einmal sorry für den sehr vagen Titel, ich habe leider keine Ahnung wie ich meine Frage präzise in einen Einzeiler packen kann.
Und zwar: Für ein privates Projekt baue ich derzeit ein System, was es erlauben soll, verschiedene Artikel mit Tags zu versehen. Die Tags ihrerseits sollen bewertet werden können, und zwar für jeden Artikel gesondert. Man stelle sich also ein System wie in Youtube vor, wo ein Artikel mit bestimmten Tags versehen ist, nur dass man auch neue Tags vergeben kann und die bestehenden Tags besser oder schlechter (nur für diesen Artikel!!) bewerten kann.
Mein Gedanke ist folgender...
Ich erstelle eine "Bewertungstabelle" mit folgenden Spalten:
id - Primärschlüssel pro Artikel
Artikel-id - zur Refernzierung auf die verschiedenen Teile des Inhalts des Artikels [integer]
Tags - Ein Array mit den verschiedenen Tag-Ids [array mit integern]
Bewertungen - ein array mit Bewertungen der Tags an Stelle 0-n [array mit integern]
Parallel dazu erstelle ich eine [I]"Tag-Tabelle", die sieht wie folgt aus:
id - Die Tag-IDs der anderen Tabelle, hier als Primärschlüssel
Tag-Text - Der Inhalt eines einzelnen Tags, z.B. "london", "lady gaga" oder sowas in die richtung [string]
Es müsste also jedes mal, wenn ein User ein noch nicht vorhandenes Tag eingibt, ein neuer Tag-Eintrag gemacht werden.
Meine Frage ist jetzt, ob dieser Ansatz Sinn macht. Ich müsste nun eigentlich für einen Artikel jedes Tag einwandfrei mit einer Bewertung verknüpfen können, indem ich das Tag an der Stelle x mit der Bewertung an der Stelle x verbinde, richtig? Irgendwie schmeckt mir die Lösung nicht ganz...
Ich habe allerdings noch einen alternativen Gedanken. Hier wird eine [I]"Artikelspezifische Tag-Tabelle" angelegt, die aus folgenden Spalten besteht:
id - Die Id eines Tags als Primärschlüssel [integer]
tag - der Text des Tags [string]
artikel-id - Die Id eines Artikels [integer]
bewertung - die bewertung des tags [integer]
Die oben zuerst genannte "Bewertungstabelle" würde dann zur Artikeltabelle, in der die Spalten "Tags" und "Bewertungen" wegfallen, die Verknüpfung erfolgt dann über die Artikel-Id.
Jetzt wo ich nochmal drüber nachdenke, gefällt mir der zweite Vorschlag eigentlich besser, weil man Arrays in großen Tabellen, wenn möglich, vermeiden sollte. Der Nachteil wäre dass die "artikelspezifische Tag-Tabelle" extrem groß werden könnte.
Was meint ihr, welcher Ansatz ist euer Favorit, auch hinsichtlich potenzieller Rechenzeit? Oder habt ihr noch einen besseren Vorschlag? Input ist sehr willkommen!
danke im Voraus,
Lars