kostenloser Webspace werbefrei: lima-city


Stichwort nur einmal ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. nikic schrieb:
    @frodo: lucas Herangehensweise ist korrekt. Ich hab auch immer gedacht, dass man IDs nicht zu verteilen hat, aber dem ist nicht so.

    Erstmal musst du bedenken, dass einem Tag weitere Informationen zugeordnet werden können. Beispielsweise eine Beschreibung, Bewertung, usw. Nur weil es zur Zeit nicht so ist, heißt es nicht, dass es sich nie ändern wird. Wenn du dann plötzlich eine Beschreibung speichern willst, dann speicherst du große Mengen an Information redundant.


    Hallo nikic,

    [merkelmode]Ich habe immer gesagt, dass...[/merkelmode]
    ...es anders aussähe, wenn zum Tag noch erweiterte Informationen wie beispielsweise eine Beschreibung zugeordnet werden würden.


    frodo89 schrieb: lucas:
    Solange du keine weiteren Daten zum Tag hinzufügst (Kurzbeschreibungen o.Ä.) vermute ich,
    das die benötigte Zeit des gesammten Prozesses geringer sein dürfte, als bei den 3 Tabellen.
    Auch wenn dabei weniger Speicher benötigt wird.


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. frodo89 schrieb:
    Hallo nikic,

    [merkelmode]Ich habe immer gesagt, dass...[/merkelmode]
    ...es anders aussähe, wenn zum Tag noch erweiterte Informationen wie beispielsweise eine Beschreibung zugeordnet werden würden.

    Jops, und da den Tags weitere Daten zugeordnet werden werden (ich lasse das absichtlich im Indikativ), ist die Bedingung erfüllt.
  4. Selbst wenn die Beschreibung zu den Tags ausgelassen werden, dann ist die Tabelle immer noch Redundant, wenn Tags doppelt vergeben werden.
    Das ist so.
    Auf Grund der Tatsache, dass es mehr Tags als Spiele gibt, sollte man meinen Vorschlag auch ohne Beschreibungen zu den Tags berherzigen.
  5. nikic schrieb:
    Jops, und da den Tags weitere Daten zugeordnet werden werden (ich lasse das absichtlich im Indikativ), ist die Bedingung erfüllt.


    Sah ich aus den Beschreibungen des Threaderstellers nicht als Gegeben.
    Nevertheless...
    Wir drehn uns im Kreise.

    Wenn jemand noch lust hat, das ausgibigen Performance-Tests zu unterziehen würde ich mich sehr über die Ergebnise freuen.
    Und sonst... meinen Standpunkt habe ich vertreten.
    Es gibt viele Wege nach Rom, welcher der Beste ist kann immer von den speziellen Bedürfnissen abhängen.

    schönen Abend... ohne Blutvergießen,

    Antagonist
  6. frodo89 schrieb:
    [...]
    Wenn jemand noch lust hat, das ausgibigen Performance-Tests zu unterziehen würde ich mich sehr über die Ergebnise freuen.
    [...]

    Eine Datenbank die redundant ist ist per se langsamer als eine nicht redundante Datenbank.
    Es kommt nur darauf an, wie viele gleiche Tags eingetragen werden.

    Also angenommen wir haben n Einträge an Spielen. Jedem Spiel werden alle k Tags aus der Datenbank zu gewiesen.

    In deiner Datenbank hättest du n*k Einträge, wobei jeder Eintrag drei Spalten hat => n*k*3.
    In der nicht redundanten Datenbank hättest du k Einträge, wobei jeder Eintrag zwei Spalten hat => k*2. Hinzu kommen die Einträge aus der Verknüpfungstabelle: n*k Einträge, wobei jeder Eintrag zwei Spalten hat => n*k*2
    ==> k*2 + n*k*2 <=> 2*k*(n+1)
    Wir behaupten, dass deine Tabelle mehr Einträge hat
    n*k*3 [deine Tabelle] > 2*k*(n+1) [nicht redundante Tabelle] || k raushauen
    <=> 3*n > 2*n + 2
    => lim (3*n) [für n gegen unendlich] > lim (2*n +2) [für n gegen unendlich] = lim (2*n) +2 [für n gegen unendlich]

    So, ich hoffe mal, dass mir zu solch später Zeit keine allzu großen Fehler unterlaufen sind. ;-)

    Beitrag zuletzt geändert: 28.1.2010 1:26:45 von lucas9991
  7. Die Behauptung, das meine Tabelle mehr Einträge hat, ist Falsch.

    Ich habe eine Tabelle mit n spalten (Spiel, Beschreibung, Dauer, was auch immer...)
    Ich habe eine Tabelle mit 2 Spalten: Spiel, Tag

    Bei x spielen, mit durchschnittlich y Tags haben wir also: In Tabelle 1 x einträge, in Tabelle 2 x*y Einträge.
    Unterm strich, x*(y+i) einträge. Insgesammt existieren z unterschiedliche Tags.

    Du hast:
    eine Tabelle mit n+1 spalten (Spiel, Beschreibung, Dauer, was auch immer..., ID)
    Du hast eine Tabelle mit 2 Spalten: Tag, TagID
    Du hast eine Tabelle mit 2 Spalten, ID, TagID

    Tabelle 1 hat x Einträge
    Tabelle 2 hat z Einträge
    Tabelle 3 hat x*y Einträge
    ___________________
    Gesammt: x*(y+1)+z einträge,

    Solange x = x, y = y, z = z, x, y, z > 0 ist x*(y+1) < x*(x+1)+z. Und zwar hast du dann genau z mehr Einträge.

    Das einzige was das wirklich Wett macht ist, das bei dir weniger Speicher verbraucht wird.
    Wie die Geschwindigkeitsverluste beim Vergleich von Strings und Chars gegenüber INT hast, das ist das was eigentlich interessiert.


    lg,
    Antagonist
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!