Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 2.22 KB

DATABASE.md

File metadata and controls

42 lines (33 loc) · 2.22 KB

VotingPrototype Database model

This is a high level view of the database design. It's not meant to replace the schema definition. Instead, the purpose is to define the objects and their relationships

event

A convention or other event which is holding one or more elections over time. Each event has members and elections.

person

For now, the data an individual has chosen to share with this database when registering for one or more events. Each person can be a member of one or more event.

election

A group of "things" members can vote on. For a Worldcon, for example, elections might include Hugo nominations, site selections, and Hugo finalist voting. Each election will have one or more categories. Elections may or may not permit write-in votes.

category

A "line item" being voted on. For site selection, for example, there may be categories for the next Worldcon and NASFIC. For Hugo nominations and finalist voting, a seemingly ever expanding number of ways to give out rockets. A category may have any number of candidates, but if write-ins are permitted, need not have any. Categories assume ranked voting. Each member can vote for a defined limited number of candidates, with a default limit of 143.

candidate

A known contenders in a given category.

member

A person who is a member of the event. Each member will have a status, an optional type and a member number for the event. As part of the voting process, they will be assigned an random UUID/GUID. This identifier will be used in lieu of any PII when votes are stored in the block chain.

eligibility

A link between members to elections and indicates each member's status in regard to that election. In order to vote, they must be ELIGIBLE. Once they ballot has been cast, this will change to VOTED. Other statuses, such as INELIGIBLE or TRANSFERRED may be defined at a later date.

inflight

This table stores partial and completed ballots with a random UUID/GUILD. As an unimplemented design goal, it would allow people to "stash" a partially filled out ballot before submitting it.

vote

An individual vote by a member on a candidate. Votes are recorded with an ordinal, indicating the rank assigned to the candidate by each member.