Avatar billede tipsen Nybegynder
04. februar 2003 - 23:53 Der er 1 kommentar og
1 løsning

Links-tabeller - db-struktur

Hej Eksperter

Jeg har følgende to tabeller, som benyttes til min links-database på www.tommyipsen.dk

CREATE TABLE links (
  LinkID int(3) unsigned NOT NULL auto_increment,
  CatID int(2) unsigned NOT NULL default '0',
  URL varchar(100) NOT NULL default '',
  Title varchar(100) NOT NULL default '',
  Description varchar(255) NOT NULL default '',
  Danish tinyint(1) NOT NULL default '0',
  Recommended tinyint(1) NOT NULL default '0',
  Visits int(4) unsigned NOT NULL default '0',
  PRIMARY KEY  (LinkID),
  UNIQUE KEY LinkID (LinkID)
) TYPE=MyISAM;

CREATE TABLE linkscat (
  CatID int(2) unsigned zerofill NOT NULL auto_increment,
  Category varchar(50) NOT NULL default '',
  PRIMARY KEY  (CatID),
  UNIQUE KEY CatId (CatID,Category)
) TYPE=MyISAM;

Jeg vil gerne udvide strukturen, således at jeg i stedet for at fortælle hvor mange gange et link er blevet benyttet i stedet kan fortælle, hvor mange der har klikket på linket de sidste n dage, hvor n er en valgfri konstant.

Nogen som har en god ide til en fornuftig db-struktur til dette formål?
Avatar billede miraculix Nybegynder
05. februar 2003 - 00:10 #1
Hvis du altid vil summere for hele dage kan du jo lave en tabel a'la':

create table clicks_pr_day (
    id - prim nøgle,
    day - dato (uden tid)
    link_id - fremmednøgle til links
    num_hits
)

Du er så nødt til at lægge ind i din redirector at den finder ud af om der er registreret noget før på linket på dagen og tælle det op, alternativt tilføjee en række.

Det vil derfor nok være smart at lave et kombineret index på day og link_id

Jeg har set metoden anvendt i tep (The Exchange Project) En open-source shop løsning som idag hedder open-et-eller-andet
Avatar billede miraculix Nybegynder
05. februar 2003 - 00:18 #2
alternativt skal du bare registrere alle klik i en tabel:

create table clicks (
  id,
  tid,
  link_id,
  evt: remote_ip
)

Så kan du batch-beregne indhold til den anden tabel en gang i døgnet. Det vil være lidt hurtigere for redirectoren, til gengæld trækker den tænder ud når den skal lave statistik (hvis du har mange kliks og ikke kører den daglige opsummering hver dag eller i hvert fald ofte).

Til gengæld kaan du samle og gemme statistik i højeste detalje på denne måde. (Du kan  jo gemme mere end brugerens ip-nr, hvis du vil) og dermed svare på spørgsmål i fremtiden som du ikke engang viste du ville stille ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester