投票数据库设计

Database design for voting

我正在实施一项投票功能,让用户可以投票选出他们最喜欢的图片。他们只能为 3 张图片投票。没有更多或更少。因此,我使用复选框对其进行验证。我需要将这些选票存储在我的数据库中。

这是我目前的情况:

|投票ID |姓名|电子邮件地址| ICNo |图片ID

(其中 imageID 是图像的外键 table)

我仍在学习数据库系统,我觉得这不是一个好的数据库设计,因为电子邮件地址和 IC 号码等某些字段必须重复。

例如,

|voteID | name|   emailAddress     |   ICNo      |  imageID
   1      BG    email@example.com    G822A28A          10
   2      BG    email@example.com    G822A28A          11
   3      BG    email@example.com    G822A28A          12
   4      MO    email2@example.com   G111283Z          10 

您的系统中有三个 "things" - 图片、人物和投票。

一个图像可以有多个投票(来自不同的人),一个人可以有多个投票(针对不同的图像)。

用图表表示的一种方法如下:

因此,您将一个人的信息存储在一个地方(人物 table),将图片的信息存储在一个地方(图片 table),将投票的信息存储在一个地方。他们之间的"chicken feet"关系说明一个人可以有很多票,一张图片可以有很多票。 ("Many" 意思是 "more than one")。