如何编写一个高效的国税系统通讯录数据库?
来源:asp之家 时间:2009-11-07 18:53:00
为某国税局开发一综合 * ,需要建立一个庞大的国税系统通讯录数据库,从各省、市到每名具体工作人员,项目较多,该如何设计各表呢?
数据库的表设计要本着快捷高效、维护方便的原则,我们建议设计九个表,将单位部分和工作人员部分分开管理,然后再通过其它信息部分将两部分结合起来。
各表结构如下,供参考:
1、省(市)份表
create table province (
provid tinyint not null identity(1,1), --省(市)编号
provname varchar(20) not null, --省(市)名
constraint pk_province primary key clustered (provid)
)
2、城市表
create table city (
cityid smallint not null identity(1,1), --城市编号
cityname varchar(30) not null, --城市名
provid tinyint not null, --隶属省(市)编号
constraint pk_city primary key clustered (cityid)
)
索引:
create index city_provid on city(provid)
create index city_cityname on city(cityname)
3、单位级别
create table kind (
kindid tinyint not null identity(1,1), --级别编号
kindname varchar(40) not null, --级别名称
constraint pk_kind primary key clustered (kindid)
)
初始值:
insert into kind (kindname) values ('省局')
insert into kind (kindname) values ('市地局')
insert into kind (kindname) values ('区县局')
insert into kind (kindname) values ('基层分局')
4、国税局
create table ntax (
ntaxid int not null identity(1,1), --国税局编号
ntaxname varchar(60) not null, --国税局名称
postcode varchar(6) null, --邮政编码
cityid smallint not null, --城市编号
kindid tinyint not null, --国税局类别
county varchar(20) null, --地市名
constraint pk_ntax primary key clustered (ntaxid)
)
索引:
create index ntax_ntaxname on ntax(ntaxname)
create index ntax_cityid on ntax(cityid)
5、科室(分局、中心)
create table depart (
departid int not null identity(1,1), --科室(分局、中心)编号
departname varchar(20) not null, --科室(分局、中心)名称
ntaxid int not null, --国税局编号
ntaxcomp char(4) not null --(税务、事业、行政)编制
constraint pk_depart primary key clustered (departid)
)
索引:
create index depart_ntaxid on depart(ntaxid)
create index depart_ntaxcomp on depart(ntaxcomp)
6、工作人员
create table member (
memberid varchar(15) not null, --登录帐号
membername varchar(10) not null, --真实姓名
nickname varchar(10) not null, --昵称
password varchar(11) not null, --密码
birthday varchar(10) null, --生日
question varchar(20) not null, --提示问题
answer varchar(20) not null, --提示答案
address varchar(100) null, --通信地址
workunit varchar(100) null, --工作单位
telephone varchar(30) null, --办公电话
mobilenumber varchar(30) null, --手机号码
email varchar(50) null, --E-mail地址
QQ varchar(50) null, -- QQ号
other text null, --其它信息(备注)
loginnum smallint default 0, --来访次数
constraint pk_member primary key clustered (memberid)
)
索引:
create index member_membername on member(membername)
7、职务
create table mem_kind (
assignid tinyint not null identity(1,1), --职务编号
assignname varchar(30) not null, --职务名称
constraint pk_mem_kind primary key clustered (assignid)
)
初始值:
insert into mem_kind (assignname) values ('正处级')
insert into mem_kind (assignname) values ('副处级')
insert into mem_kind (assignname) values ('科级')
insert into mem_kind (assignname) values ('副科级')
insert into mem_kind (assignname) values ('科员')
insert into mem_kind (assignname) values ('办事员')
8、其它信息
create table mem_depart (
memberid varchar(15) not null, --人员编号
departid int not null, --科室(分局、中心)编号
assignid tinyint not null, --职务类别
register datetime not null default getdate(), --注册时间
constraint pk_mem_depart primary key clustered (memberid,departid)
)
索引:
create index mem_depart_memid on mem_depart(memberid)
create index mem_depart_departid on mem_depart(departid)
9、留言簿
create table message (
messageid int not null identity(1,1), --信息编号
memberid varchar(15) not null, --留言人员
targetid varchar(15) not null, --目标人员
message varchar(1000) null, --信息内容
addtime datetime not null default getdate(), --留言时间
looked bit not null default 0, --已经看过
constraint pk_message primary key clustered (messageid)
)
索引:
create index message_memberid on message(memberid)
create index message_targetid on message(targetid)