13de6b65da
I was unsure what field type to make the results, but reading this: http://dev.mysql.com/doc/refman/5.0/en/blob.html convinced me that I should probably make it "text" type.
77 lines
2.8 KiB
SQL
77 lines
2.8 KiB
SQL
DROP TABLE IF EXISTS `elections`;
|
|
CREATE TABLE `elections` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`type` enum('elections','referendum') NOT NULL default 'elections',
|
|
`name` varchar(150) NOT NULL default '',
|
|
`voting_start` datetime default NULL,
|
|
`voting_end` datetime default '0000-00-00 00:00:00',
|
|
`choices_nb` int(11) NOT NULL default '0',
|
|
`question` text NOT NULL,
|
|
PRIMARY KEY (`id`));
|
|
DROP TABLE IF EXISTS `election_anon_tokens`;
|
|
CREATE TABLE `election_anon_tokens` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`anon_token` varchar(200) NOT NULL default '',
|
|
`election_id` int(11) NOT NULL default '0',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=903 DEFAULT CHARSET=utf8;
|
|
DROP TABLE IF EXISTS `election_choices`;
|
|
CREATE TABLE `election_choices` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`election_id` int(11) NOT NULL default '0',
|
|
`choice` varchar(150) NOT NULL default '',
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 ;
|
|
|
|
/* The election_results table stores the HTML output from the openstv command.
|
|
** It must be inserted manually at the end of the election.
|
|
*/
|
|
|
|
DROP TABLE IF EXISTS `election_results`;
|
|
CREATE TABLE `election_results` (
|
|
`election_id` int(11) NOT NULL default '0',
|
|
`result` text
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
|
|
/* Data in election_tmp_tokens only lives while the election is ongoing, and
|
|
** the PHP code deletes these entries when it records votes.
|
|
*/
|
|
|
|
DROP TABLE IF EXISTS `election_tmp_tokens`;
|
|
CREATE TABLE `election_tmp_tokens` (
|
|
`election_id` int(11) NOT NULL default '0',
|
|
`member_id` int(11) NOT NULL default '0',
|
|
`tmp_token` varchar(200) NOT NULL default ''
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
/* Not good normal form in election_voters table; there will be duplicates on
|
|
** the email_address, but we think of a election_voter_id as a identity tied a
|
|
** specific election. */
|
|
|
|
DROP TABLE IF EXISTS `election_voters`;
|
|
CREATE TABLE `election_voters` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`election_id` int(11) NOT NULL default '0',
|
|
`email_address` varchar(500) NOT NULL default '',
|
|
PRIMARY KEY (`id`));
|
|
|
|
|
|
/*
|
|
from each voter we prepare anon tokens
|
|
then insert those anon tokens to database
|
|
of course before a new election record should be created since its id is needed for anon_tokens
|
|
and election_choices are to be inserted
|
|
rest is handled by itself iirc
|
|
<bolsh> There's "election_votes" and "foundationmembers" too
|
|
I'm not sure if there's a join done between foundationmembers and the other tables
|
|
*/
|
|
|
|
DROP TABLE IF EXISTS `election_votes`;
|
|
CREATE TABLE `election_votes` (
|
|
`id` int(11) NOT NULL auto_increment,
|
|
`choice_id` int(11) NOT NULL default '0',
|
|
`anon_id` int(11) NOT NULL default '0',
|
|
`preference` int(11) NOT NULL default '0',
|
|
PRIMARY KEY (`id`));
|
|
|