Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Datenbank für Affiliate-Programm Modellieren

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Fard2.0, 25 April 2012.

  1. Fard2.0

    Fard2.0 Neuer Benutzer

    Hey,
    ich arbeite gerade an einen Wordpress-Plugin, dass folgendes tun soll:

    - User können sich anmelden
    - User bekommt eine eindeutige Affiliate-ID
    - User Postet seinen Link im WWW und wenn sie auf meiner Seite landen, soll folgendes gespeichert werden: IP-Adresse von dem Besucher (um missbrauch vorzubeugen) speichern
    Uhrzeit
    Datum
    - Dann soll natürlich die Gesamt Klicks gespeichert werden und später soll auch für den Benutzer Tages, Wochen und Monats Übersichten zur verfügung stellen.

    Das sind grob die Daten die ich speichern möchte. Ich bin SQL Neuling und taste mich selber dran. Um mit der Sprache das gewünschte umzusetzen bemühe ich diverse Bücher und das Internet.

    Allerdings habe ich mir bis jetzt noch nicht Gedanken über die Modellierung gemacht, bis es für mich hieß: ich brauch jetzt eine Vernünftige Struktur und Datenbank um Daten so effizient wie möglich abzuspeichern und auch schnell abzurufen und bitte euch deswegen um hilfe. Wieviele Tabellen sind sinnvoll um daten platz/zeit sparend zu speichern und auch um später die gewünschten Daten schnell den User zur Verfüung zu stellen.

    Ich habe mir bereits Gedanken gemacht und würde euch gerne zur Struktur meine Idee Vorstellen, an dem ich konkrete fragen habe:


    Tabelle 1:
    ID |
    User-ID (wird von Wordpress erstellt und in einer andere Tabelle gespeichert) |
    Affiliate-ID

    Tabelle 2:
    Affiliate-ID | IP-Adresse | Datum | Uhrzeit | Klick | evlt. Besucherquelle

    Ich stelle es mir gerade schwierig vor, alle Klicks mit IP-Adresse, Uhrzeit, Datum usw. in einer Tabelle zu speichern und zb für User X alle Daten von der gesamten Tabelle nur für die letze Woche (also klicks der letzten Woche) in einer pauschalen Übersicht (User sieht nur die Summe) zur Verfügung zu stellen, zumal es nach 3 Monaten bei mehreren Hunderten Usern und jeweiligen Hunderten Klicks zu eine riesigen Tabelle wächst.

    Auf der anderen Seite für jeden User eine eigene Tabelle zu machen wäre ja in der Breite sehr sehr groß. Ich wäre für jeden Denkanstoß wie ich am besten meine Tabellen strukturieren soll (wie aufteilen?).
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Soweit ich das sehe, kannst du gerne nur eine Tabelle verwenden und zwar genau so, wie du deine gewünschte Tabelle beschrieben hast.

    Dies auf Wochen und Monate auszuwerten lässt sich in SQL (direkt beim Aufruf) erledigen.

    Dazu existieren, je nach DBMS verschiedene Funktionen, um z.B.: anhand eines Datums don Wochentag oder die Kalenderwoche zu ermitteln.

    Hoffe dies hilft dir weiter! Lg
     
    Fard2.0 gefällt das.
  3. Fard2.0

    Fard2.0 Neuer Benutzer

    Vielen Dank für die Antwort. Da ich noch keine Erfahrung mit so einer erwarteten Tabellen Größe habe, wusste ich nicht ob die Antwortzeit bei sagen wir 1 Mio Einträgen zu lange dauern würde, wenn zb. nur für User x alle seine Klicks nur aus einer bestimmten Woche wiedergegeben werden sollen.

    Aber wenn es keine Probleme gibt, werde ich es auch so dann machen:)
     
  4. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Je größer die Einschränkung (d.h. je weniger Zeilen zurückgeliefert werden müssen) desto schneller!

    D.h. Eine Wochenansicht für einen bestimmten User ist schneller, als eine Jahresansicht. Eine Tagesansicht ist jedoch noch schneller als eine Wochenansicht usw.

    Je weniger Datenzeilen, dem gewünschten aufsummierten oder sonstigen Ergebnis zu Grunde liegen, desto schneller! Macht doch Sinn!?

    Lg
     
    Fard2.0 gefällt das.
  5. Fard2.0

    Fard2.0 Neuer Benutzer

    Ok. Vielen Dank :) Klingt logisch :)

    edit: Falls aber jemand doch eine elegantere Lösung hat, bitte einfach schreiben :)
     
  6. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Schau, es kommt in diesem Fall auch auf dein DBMS an, welches du verwendest.

    In Oracle, MSSQL und anderen können auch Indizes auf Tabellen gesetzt werden, hier z.B.: auf die UserID um die Zeit, welche dein Select-Stmt benötigt zu verringern. Diese Indizes müssen je nach dem refreshed werden, bzw. gelöscht und neu erstellt werden, dies wird normalerweise via Batchjob in der Nacht erledigt!!!

    Es existieren wesentlich größere Tabellen (vor allem Logtabellen) welche mehrere Millionen Datensätze beinhalten. Somit wäre deine Tabelle nicht gerade ein Einzelfall!!!

    Lg
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden