hoge66的专栏

-----------------------看到专栏,偷着笑!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

设计数据库时要注意的事项!

Posted on 2011-06-20 10:45  hehoge  阅读(431)  评论(0编辑  收藏  举报

实际项目中应该注意的问题,想到了就记下来!

1、用关联表,建立主键和外键的关系,建立级联删除机制

2、数据库事务,在error>0时要及时Rollback tran tranname

 

 

alter procedure AddSchool(
@学校编号  varchar(50),
@学校名称  varchar(50),
@学校类别  varchar(50),
@学校电话  varchar(50),
@学校地址  varchar(50),
@省  varchar(50),
@市  varchar(50),
@区  varchar(50),
@学校描述  varchar(50),
@IP  varchar(50),
@创建时间 dateTime,
@点数 int,
@积分 int,
@状态 int ,
@题库权限   varchar(50),
@到期时间 datetime,
@联系人  varchar(50),
@备注  varchar(200),
@学校图片1   varchar(50),
@学校图片2  varchar(50),
@学校分类  varchar(50)
)
as
--创建学校
declare @管理员角色编号 varchar(50),@jsid int
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号return
begin tran ads
--系统初始化
insert into 学校表(学校编号,学校名称,学校类别,学校电话,学校地址,省,市,区,学校描述,IP,创建时间,点数,积分,状态,题库权限,到期时间,联系人,备注,学校图片1,学校图片2,学校分类)values
(
@学校编号,@学校名称,@学校类别,@学校电话,@学校地址,@省,@市,@区,@学校描述,@IP,@创建时间,@点数,@积分,@状态,@题库权限,@到期时间,@联系人,@备注,@学校图片1,@学校图片2,@学校分类)
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号 )
begin
--1、添加学校学段学科表

insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','政治')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','政治')
--2、创建对应的角色(初始化生成)
select @jsid=max(id)+1 from 角色表
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid,'管理员','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+1,'校长','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+2,'任课老师','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+3,'班主任','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+4,'学科组长','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+5,'家长','不可删除和更改','系统默认',getdate(),@学校编号
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+6,'学生','不可删除和更改','系统默认',getdate(),@学校编号)
IF(@@error<>0)
BEGIN
  
ROLLBACK TRAN ads
END 
--3、创建管理员用户(自动)
insert into 用户附表(用户标识,注册时间,是否激活,身份审核,密码,用户类型)values(@学校编号,getdate(),1,1,'111222','系统默认管理员')
--4、将该用户添加到该学校的角色中
select @管理员角色编号=ID from  角色表 where 学校编号=@学校编号 and 角色='管理员'
insert into 用户角色表(用户标识,角色编号,创建人)values(@学校编号,@管理员角色编号,'zhnet')

end
IF(@@error<>0)
BEGIN
  
ROLLBACK TRAN ads
END 
else --如果没错,就提交事务
commit tran ads

GO