首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

做ASP网站初期,遇到数据库方面的有关问题请高手赐教

2012-03-27 
做ASP网站初期,遇到数据库方面的问题请高手赐教1.varchar(50)和nvarchar(50)后者比前者多使用一倍空间外,

做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属性的字段。所以也不必指定了。

热点排行