Supponiamo che io abbia Tutors
che prende online webclasses
e crei learning packs
. Entrambi online webclasses
e learning packs
possono essere valutati da students
e infine un punteggio di tutor's
è la media semplice di tutte le valutazioni sul suo classes
e packs
.Mysql - Una domanda di progettazione di database semplice
Questa è l'architettura tavolo della nostra attuale Ratings
tavolo -
CREATE TABLE IF NOT EXISTS `Ratings` (
`id_rating` int(10) unsigned NOT NULL auto_increment,
`id_teacher` int(10) unsigned default NULL COMMENT 'the teacher who created the class/pack',
`id_lp` int(10) unsigned default NULL COMMENT 'the id of the learning pack',
`id_wc` int(10) NOT NULL default '0' COMMENT 'the id of the webclass',
`id_user` int(10) unsigned NOT NULL default '0' COMMENT 'the user who has rated',
`rate` int(10) unsigned NOT NULL default '0',
`cdate` timestamp NOT NULL default CURRENT_TIMESTAMP,
`udate` timestamp NULL default NULL,
PRIMARY KEY (`id_rating`),
KEY `Ratings_FKIndex1` (`id_user`),
KEY `id_lp` (`id_lp`),
KEY `id_wc` (`id_wc`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Attualmente, sia di classe e imballare feedback vengono inseriti nella stessa tabella (id_wc
e id_lp
sono iscritti conseguenza - uno è entrato e l'altro è NULL
per ogni record di valutazione).
Quindi, la mia domanda è -
È questa architettura corretto o è meglio mantenere class
e pack
feedback separano? Perché o perché no? Ho bisogno esattamente dello stesso numero di campi di tabella Rating
per la valutazione class
e pack
.
Immagino che se le classificazioni di classe e confezione dovessero essere trovate separatamente, le tabelle separate ridurranno il numero di record da cercare. Ma, dal momento che nel nostro caso sono necessarie solo le valutazioni del tutor (coinvolge sia la classe che i pacchetti), è per questo che tutti i punteggi sono messi insieme.
Usa mySQL workbench è persino creato dagli sviluppatori mysql. –