读书人

做ASP网站初期遇到数据库方面的有关

发布时间: 2012-03-27 13:44:24 作者: rapoo

做ASP网站初期,遇到数据库方面的问题请高手赐教
1.varchar(50)和nvarchar(50)
后者比前者多使用一倍空间外,因为nvarchar是使用unicode编码的。
那么何时使用前者,何时使用后者

是显示中文字符时都需要用后者吗?

2.索引
什么情况下需要用索引?
数据库设计后并投入使用一段时间后,还可以建索引吗?

3.identity(1,1)
当标记值增大到最大值时,可以使用dbcc checkident(table,reseed,1)来重新设置标记,
可以看到checkident的参数中没有指定字段
那么,如果一个数据库中有多个字段都有identity属性时,这个存储过程是不是会影响到所有这些字段?


以下是我设计的数据库,请大家多多批评:)
一个类似交友网性质的数据库,
为避免用户数据量大时响应速度慢,在数据库设计时,我还需要考虑哪些因素?
我的QQ:39884440,MSN:miludeer906@hotmail.com,希望得到各位高手的帮助,谢谢

//创建用户基本信息表
create table userbasicinfo(
userid int primary key,
nickname nvarchar(20) not null,
password nvarchar(10) not null,
name nvarchar(8),
birthday datetime,
sex nvarchar(4),
height int,
weight int,
marry nvarchar(4),
education nvarchar(4),
profession nvarchar(10),
salarymin int,
salarymax int,
company nvarchar(20),
photoid int,
photourl nvarchar(100),
province nvarchar(10),
city nvarchar(10),
town nvarchar(10),
village nvarchar(10),
zipcode nvarchar(6),
telephone nvarchar(20),
homepage nvarchar(20),
email nvarchar(20),
character nvarchar(80),
hobby nvarchar(80),
show nvarchar(50),
paltype nvarchar(30),
expectage int,
expectsex nvarchar(4),
expectheight int,
expectmarry nvarchar(4),
expecteducation nvarchar(4),
expectsalarymin int,
expectsalarymax int,
expectothers nvarchar(50)
)

//创建用户网站信息表
crete table userwebinfo(
userid int foreign key from user.userid,
registetime datetime,
logintimes int default 0,
lastlogin datetime,
popularity int default 0,
experience int default 0
)

//创建用户登录信息表
create table userloginfo(
userid int foreign key from user.userid,
logintime datetime
)

//创建网站基本信息表
create table webstat(
id primary key,


usernumber int
)

//创建相册表
create table photos(
photoid int primary key,
photourl nvarchar(80),
userid int foreign key from user.userid
)

//创建用户日记表
create table notepad(
noteid int primary key,
notetitle nvachar(20),
note nvarchar(1000),
noteweather nvarchar(10),
notetime datetime,
readtimes int default 0,
replytimes int default 0
userid int foreign key from user.userid,
)

//创建日记回复表
create table notereply(
notereplyid int primary key,
notereply nvarchar(1000),
notereplytime datetime,
userid int foreign key from user.userid,
noteid int foreign key from notepad.noteid
)


[解决办法]
1.varchar(50)和nvarchar(50)
最好还是使用nvarchar类型,因为如果使用varchar的话,数据库中保存了非unicode编码字符和unicode编码字符,会有一个额外的类型转换,再者,varchar保存的字符串与保存的内容的编码方式有关,字符数不确定。

2.索引
索引可以加快数据的检索速度,这个是优化数据时,必须第一考虑的事情。系统运行后,也是可以添加索引的。但是,添加索引并不意味着检索速度就会加快,并且检索也会给新增数据时带来负担,所以需要仔细考虑索引的字段。

3.identity(1,1)
因为dbcc checkident(table,reseed,1)语句不需要使用字段名原因是这样子的,一个表只能有一个identity属性的字段。所以也不必指定了。

读书人网 >asp.net

热点推荐