投票调查系统数据库设计及大家指教

       模仿小妖版投票系统(asp)数据库做了一个aspnet投票系统,主要实现功能有以下三种情况:1.单项投票,2.综合投票,3.评选活动。所建数据库如下,感觉字段有些冗余,但也找不到好的方法,请大家给点建议。
       综合投票可能包括多个单项投票,综合投票和单项投票都可为评选活动。
综合投票表--colligate
 

序号

列名

数据类型

长度

主键

允许空

字段说明

1

ColligateID

int

4

 

 

2

Title

varchar

100

 

投票名称

3

Note

varchar

1000

 

投票说明

4

StartTime

datetime

8

 

投票开始时间

5

EndTime

datetime

8

 

结束时间

6

IsComment

bit

1

 

是否评论

7

IsAnonym

bit

1

 

是否匿名

8

TimeInterval

int

4

 

投票间隔时间

9

IntervalType

varchar

50

 

投票间隔时间类型

说明:间隔时间+间隔时间类型举例如下:1day or 20minutes

单项投票表--Vote
 

序号

列名

数据类型

长度

主键

允许空

字段说明

1

VoteID

int

4

 

 

2

ModeID

int

4

 

所属综合投票id,不是综合投票是0

3

Title

varchar

100

 

 

4

Radio

int

4

 

1为单选,2为多选,3为评论

5

StartTime

datetime

8

 

 

6

EndTime

datetime

8

 

 

7

VoteColumn

int

4

 

分几列显示

8

MaxCount

int

4

 

多选时最多选几条

9

IsComment

bit

1

 

 

10

IsAnonym

bit

1

 

登录/匿名

11

TimeInterval

int

4

 

两次投票时间间隔

12

IntervalType

varchar

50

 

时间间隔日期格式

14

IsImage

bit

1

 

是否是评选活动


        在这两个表中出现了冗余的字段,如何合并或是重构好呢?迷惑ing...
    
  选项表--Item

序号

列名

数据类型

长度

主键

允许空

字段说明

1

ItemID

int

4

 

 

2

VoteID

int

4

 

 

3

Item

varchar

200

 

 

4

ItemCount

int

4

 

 

5

Images

varchar

200

 

 

         

在这个Item表中存在的一个问题是,每次投票或是评选的字段会变化,如何建立动态数据库呢?

留言表--Message

序号

列名

数据类型

主键

允许空

字段说明

1

MessageID

int

 

 

2

UserID

int

 

 

3

VoteID

int

 

综合为ColligateID,单项为VoteID

4

Content

varchar

 

 

5

LeaveTime

datetime

 

留言时间

6

ColligateID

int

 

 

因留言表有时是对综合投票留言,得需要colligateID,有时是对单项投票留言,得需要voteID,这样会出现了用两个字段来标志投票ID。本来我想用GUID来表示主键,后来还是用int了。
       

第一次写文章,请大家多多指教,给些意见。

原文地址:https://www.cnblogs.com/salough/p/vote.html