作投票系统的数据库问题

作投票系统的数据库问题,第1张

两个表吧,一个(发表人,论题,论题ID),第二个(论题ID,选项ID,选项内容,投票总计)

觉得建两个表的可扩展能力比较好,维护性好一点.

建一个表的话也可以.查询速度应该影响不大.个人意见.

这个,我的回到是sql server版本的 Oracle了解。。mysql不熟悉。。。

--用户信息表

create table userinfo(

uid int identity(1,1) primary key,

uname nvarchar(20) not null,

usex nvarchar(2) check (usex in ('男','女')),

imgpath nvarchar(500),--存放上传图片的路径,如果是多张图片的话可以用特殊符号隔开,

--在显示的时候可以用split方法,很多语言都有这个方法的

/*

自己加字段吧

*/

)

--用户登陆表

create table account(

id int identity(1,1) primary key,

account_name nvarchar(20) not null,

account_password nvarchar(64) not null,

uid references userinfo(uid)

)

--投票

/*

id 记录的主键

a-e 为评价的等级 没有投票的为0 投一票就加1

goods_id 为所评论对象id的外键关联

要投票的时候先判断表里有没有被评论对象的id

有就修改记录,没有就插入新纪录

这样的话用户的信息就没办法被录入到这张表中,但是在页面跳转的时候

用户信息是可以放在session里的,应该是没用影像的

如果以 用户id和被评论对象的id做组合主键的话

冗余数据就太多了

*/

create table acc_vote(

id int identity(1,1) primary key,

a int not null,

b int not null,

c int not null,

d int not null,

e int not null,

goods_id references goods_table_name(index)

)

--留言表

create table acc_leaveword(

id int identity(1,1) primary key,

title nvarchar(100),

author nvarchar(50),

publishtime nvarchar(20),

conntent nvarchar(20),

isrestore int,--是否为回复,是主题的话0,回复的话就自引用对应主题的id

id int references account(id)

)

问题没太看明白,我的猜测是你希望一个人只能投一次票,投票人必须属于用户数据表中的人

1. 如果是这样的话最简单的方法是在投票表中加中间表,带入投票主题的ID和以投票用户的ID,

2. 当然也可以直接在投票主题所在数据表中加一列,记录用户ID,用"|"隔开,如 USER01|USER02|USER04, 然后使用arr = Split(Str, "|"), arr(0), arr(1) ... arr(i) 的方法调用用户


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6811394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存