觉得建两个表的可扩展能力比较好,维护性好一点.
建一个表的话也可以.查询速度应该影响不大.个人意见.
这个,我的回到是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) 的方法调用用户
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)