Avatar billede htx98i17 Professor
28. december 2008 - 11:24 Der er 14 kommentarer og
1 løsning

struktur til bedømmelsessystem

Ideer til en tabelstruktur ønskes.

Man skal kunne bedømme 2 typer objekter.
Man kan vurdere fra 1-6 (ikke godt->godt)

Jeg har selv tænkt:

tblvideoer (type 1)
id - INT(11) primary key autoincrement

tblbilleder (type 2)
id - INT(11) primary key autoincrement

tblvurdering
type - TINYINT(1) INDEX
relate_id - INT(11) INDEX
vurdering - TINYINT(1)

Data kunne eksempelvis se sådan ud:
type    relate_id    vurdering
1            1            5
2            1            3
1            1            4
2            2            6


Hvad menes om denne metode?
Andre forslag?
Avatar billede arne_v Ekspert
29. december 2008 - 22:20 #1
tblvideoer:
id - INT, PK, AUTO
...

tblbilleder:
id - INT, PK, AUTO
...

tblvurdering:
id - INT, PK, AUTO
type - TINYINT, pseudo FK
relate_id - INT, FK
vurdering - TINYINT

er vel OK men jeg ville overveje:

tblmultimedie:
id - INT, PK, AUTO
type - TINYINT
...

tblvurdering:
id - INT, PK, AUTO
relate_id - INT, FK
vurdering - TINYINT

medmindre der er stor forskel på de øvrige felter for video og billed.
Avatar billede htx98i17 Professor
30. december 2008 - 14:50 #2
jeg slår tblbilleder og tblvideo sammen som du forslår.

Jeg havde alligevel et blob-felt i tblvideoer (til thumbnail fra video) og det felt kan jo ligeså godt være en billede-fil.

Dog vil der komme et felt (filnavn) som skal sættes til at må være NULL, da det felt skal bruges til videofilen (som er uploaded via din javaapplet) og som ikke kommer i brug hvis multimediet er et billede.

CREATE TABLE `tblvurderinger` (
  `id` int(11) NOT NULL auto_increment,
  `relationsid` int(11) NOT NULL default '0',
  `vurdering` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `type` (`relationsid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


CREATE TABLE `tblforummultimedier` (
  `id` int(11) NOT NULL auto_increment,
  `label` varchar(30) NOT NULL default '',
  `beskrivelse` varchar(255) default NULL,
  `filnavn` varchar(100) default NULL,
  `billedefil` blob,
  `oprettet` datetime NOT NULL default '0000-00-00 00:00:00',
  `brugerid` int(11) NOT NULL default '0',
  `status` tinyint(1) NOT NULL default '0',
  `type` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `type` (`type`),
  KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Avatar billede htx98i17 Professor
30. december 2008 - 15:11 #3
Nu jeg er ved at slp tabeller sammen, så overvejer jeg om det ville være en fordel at slå tblforumtopposter og tblforumposter sammen. tblforumkategorier er også inde i billedet.

Det jeg tænker lidt over er hvordan jeg smartest får defineret hvilke indlæg der er topposten og hvilke der er svarene på topposten?

tblforumkategorier
id  int(11) NOT NULL   
type  tinyint(4) NOT NULL   
label  varchar(30) NOT NULL   
beskrivelse  varchar(255)NULL


tblforumtopposter
id  int(11) NOT NULL   
kategoriid  int(11) NOT NULL
brugerid  int(11) NOT NULL
oprettet  datetime NOT NULL   
emne  varchar(40) NOT NULL   
indhold  text NOT NULL   
status  tinyint(1) NOT NULL

tblforumposter
id  int(11) NOT NULL   
toppostid  int(11) NOT NULL   
brugerid  int(11) NOT NULL   
oprettet  datetime NOT NULL
indhold  text NOT NULL   
status  tinyint(1) NOT NULL
Avatar billede arne_v Ekspert
30. december 2008 - 20:18 #4
tblforumkategorier
id  int(11) NOT NULL 
type  tinyint(4) NOT NULL 
label  varchar(30) NOT NULL 
beskrivelse  varchar(255)NULL


tblforumposter
id  int(11) NOT NULL 
kategoriid  int(11) NOT NULL
brugerid  int(11) NOT NULL
oprettet  datetime NOT NULL 
emne  varchar(40) NOT NULL 
indhold  text NOT NULL 
status  tinyint(1) NOT NULL
parentid int(11) NULL

hvor parentid er NULL for top poster lyder umiddelbart OK for mig.
Avatar billede arne_v Ekspert
30. december 2008 - 20:20 #5
Eller måske bedre:

tblforumkategorier
id  int(11) NOT NULL
type  tinyint(4) NOT NULL
label  varchar(30) NOT NULL
beskrivelse  varchar(255)NULL

tbltraad
id int(11) NOT NULL
kategoriid  int(11) NOT NULL
emne  varchar(40) NOT NULL

tblforumposter
id  int(11) NOT NULL
brugerid  int(11) NOT NULL
oprettet  datetime NOT NULL
indhold  text NOT NULL
status  tinyint(1) NOT NULL
parentid int(11) NULL
traadid int(11) NOT NULL

for at afspejle at et svar ikke kan skifte kategori - og i min fortolkning heller ikke
skifte emne
Avatar billede htx98i17 Professor
30. december 2008 - 21:30 #6
dit første forslag synes jeg bedst om
jeg ved ikke helt hvad der er fordelen ved nr. 2
Avatar billede arne_v Ekspert
30. december 2008 - 22:19 #7
at en tråd ikke kan skifte kategori eller emne
Avatar billede htx98i17 Professor
30. december 2008 - 22:23 #8
Det kan den vel godt? hvorfor kan den ikke? :)

det er ikke meningen at man skal kunne skifte hverken kategori eller emne, men jeg kan ikke se hvorfor det ikke er muligt i det eksempel
Avatar billede arne_v Ekspert
30. december 2008 - 22:25 #9
fordi kategori og emne ligger i tråden

1 række i tbltraad med 47 rækker i tblforumposter (hm - tbltraad skulle nok hedde tblforumtraad !)

alle 47 poster faar kategori og emne fra den ene række i traad tabellen - derfor er
de garanteret ens for alle poster
Avatar billede htx98i17 Professor
30. december 2008 - 22:28 #10
ja okay på den måde

men ud over det, er der ingen performancemæssig fordel ved sidste forslag?
Avatar billede arne_v Ekspert
30. december 2008 - 23:06 #11
Nej. Snarere tværtimod. Det vil give en ekstra join.

Men normalt designer man tabelstruktur for at sikre data konsistens - og så
får man det til at performe godt bagefter.
Avatar billede htx98i17 Professor
30. december 2008 - 23:11 #12
ok det vil jeg gerne
hvordan får man dette eksempel til at performe godt?
Avatar billede arne_v Ekspert
30. december 2008 - 23:17 #13
første skridt er index på traadid feltet

sandsynligvis er performance så god nok
Avatar billede htx98i17 Professor
30. december 2008 - 23:18 #14
ok easy :)
du skal have nogle point
tak for hjælpen endnu engang
Avatar billede arne_v Ekspert
31. december 2008 - 01:21 #15
svar
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