1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Tags bzw. Schlagwörter in Datenbank speichern

    • Frage
  • huzi
  • 21. Januar 2008 um 20:17
  • Unerledigt
  • huzi
    6
    huzi
    Mitglied
    Reaktionen
    7
    Punkte
    372
    Beiträge
    67
    • 21. Januar 2008 um 20:17
    • #1

    Hallo!

    Das ist eine Frage, die mich jetzt schon einige Zeit beschäftigt... Wie sieht das Datenbankdesign einer Software/Onlinedinst aus, die Tags zu Links, Photos, usw. speichert?

    Die einzige Lösung die mir einfällt, ist eigentlich nur folgende:

    2 Tabellen, z.B für Links mit Tags:

    Links: {id, Title, URL}
    LinkTags: {LinkId, Tag}

    Natürlich könnte ich auch die URL als Schlüssel nehmen, aber um das gehts ja nicht (außerdem würde die URL viel mehr Platz brauchen als ne ID)...

    Ist das die beste Lösung, oder fällt wem eine gscheitere ein? Find das schaut so unelegant aus...

    Vielleicht überseh ich irgendein zusätzliches 'Feature' , dass man bei Tags noch beachten sollte, kennt jemand nen guten Artikel oder Tips zu dem Thema?

    mfg Huzi

    >>>javatricks.de
    Studentenjobs Wien
    aktuelle Kalenderwoche

  • Paulchen
    1
    Paulchen
    Gast
    • 21. Januar 2008 um 20:51
    • #2

    Ich würd da eine Relation für die Tags einführen, damit du über diese Relation festlegen kannst, welche Tags verwendet werden dürfen. Außerdem kannst du dann effizient abfragen, welche Tags es gibt, weil du nur die Relation "Tags" abfragen musst und nicht sowas wie "SELECT DISTINCT Tag" über die Relation "LinkTags" machen musst.

    In einem ER-Diagramm wären das also zwei Entitäten "Links" und "Tags" mit einer M:N-Beziehung dazwischen.

  • huzi
    6
    huzi
    Mitglied
    Reaktionen
    7
    Punkte
    372
    Beiträge
    67
    • 21. Januar 2008 um 21:14
    • #3

    Ist DISTINCT leicht so langsam bzw. aufwendig? Oder ist es einfach nur unschön?

    Ist es dann auch noch gscheit tags eine Id zu geben?
    Ist es überhaupt gscheit alles mit Ids zu versehen, in der VU Datenmodellierung wird ja immer alles mögliche als Schlüssel genommen, nur keine selbst eingeführten Ids...

    mfg Huzi

    >>>javatricks.de
    Studentenjobs Wien
    aktuelle Kalenderwoche

  • Paulchen
    1
    Paulchen
    Gast
    • 21. Januar 2008 um 22:28
    • #4
    Zitat von huzi

    Ist DISTINCT leicht so langsam bzw. aufwendig? Oder ist es einfach nur unschön?

    Bei großer Anzahl von Datensätzen ist Duplikatelimination recht langsam.

    Zitat von huzi

    Ist es dann auch noch gscheit tags eine Id zu geben?

    Kommt auf die Bezeichnung der Tags an und ist in einem gewissen Maße Geschmackssache. Anstelle eines Tagnamens, der 1000 Zeichen lang sein kann, würd ich wohl eine ID einführen, genauso statt eines zusammengesetzten, womöglich aus einer ganzen Handvoll von Attributen bestehenden Primärschlüssels. Sind die Tagnamen aber zum Beispiel auf fünf Zeichen beschränkt, bieten sie sich natürlich eher als Primärschlüssel an.

  • huzi
    6
    huzi
    Mitglied
    Reaktionen
    7
    Punkte
    372
    Beiträge
    67
    • 21. Januar 2008 um 22:52
    • #5

    Danke vielmals für die Antworten, da hat man einen 2er auf DM und kann nicht mal so simple Probleme selbst entscheiden :o

    >>>javatricks.de
    Studentenjobs Wien
    aktuelle Kalenderwoche

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 22. Januar 2008 um 11:57
    • #6
    Zitat von Paulchen

    Bei großer Anzahl von Datensätzen ist Duplikatelimination recht langsam.


    Ist das eine eiserne Regel? Ich bin kein Datenbank-Mensch, aber ich hab das vage Gefühl, hashbasiert würde das schnell gehen. Stellt sich die Frage, ob alle (relationalen, SQL-basierten) DBMS ihre Tabellen wirklich ganz primitiv als Listen von Tupeln ablegen.

    *plantsch*

  • max_rayman
    9
    max_rayman
    Mitglied
    Reaktionen
    17
    Punkte
    887
    Beiträge
    169
    • 22. Januar 2008 um 13:49
    • #7
    Zitat von Plantschkuh!

    Ich bin kein Datenbank-Mensch, aber ich hab das vage Gefühl, hashbasiert würde das schnell gehen.

    Nja den Hash müsste man vermutlich auch eigens für das distinct erzeugen, da es ja von der Projektion abhängt welche Spalten/Werte verglichen werden.

    Denke das Problem liegt daran, dass beim distinct die Werte Felder nicht indiziert sind (wie z.B.: bei Schlüsseln) und dass es im Optimierungsbaum nicht nach unten verschoben werden kann (wie z.B.: bei einer Selektion) sondern immer an oberster Stelle steht.

    Das es mit distinct bei größeren Mengen saulangsam wird, konnte ich auch schon mal hautnah in der Praxis miterleben (und wurde auch "belehrt" [das merkt man sich meistens ;)]).

    Bin aber auch kein DB Mensch, also nur Vermutungen.

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung