一卡通数据库表结构1. 数据库结构文档书写规范正文字体,包括所有中文字符和英文字符,统一采用“宋体五号字”(便于对齐)。
中文表名、视图名、存储过程名、函数名、触发器名作标题,格式采用标题四(便于在文档结构图中查找),中文表名后跟括号和实际英文表名(视图名、存储过程名等同表名)。
drop table、create table、create index等语句顶头书写(无缩进),表中每个字段占一行,行前空出4个空格(不是缩进),字段名、字段类型、缺省值、是否允许空值、注释说明等分列左对齐(表内对齐即可,中间用空格填充)。
每个字段必须有注释,注释内容包括字段含义、取值范围、取值意义等。
创建主键、外键、索引必须有注释说明。
创建存储过程、函数、触发器时必须详细注释其功能。
注释均采用 /*注释内容*/ 格式。
具体格式见4.1范例。
2. 数据库命名规范--数据库名:libcard;用户名:card;口令:card--数据库文件名:数据文件:libcard_data.mdf;日志文件:libcard_log.ldf--表名命名规范:表名长度不超过30个字符,表名使用一个单词或多个单词,单词选择能够概括表内容的一个或多个英文单词,表名中含有单词全部采用单数形式,单词首写字母要大写,多个单词间使用连接符号“_”,如User_Info,User_Type。
若表名只有一个单词,不使用缩写;超过一个单词,则每个单词均采用缩写,缩写后单词长度介于2个到5个字符之间。
如管理员表Administrator,用户信息表User_Info。
关联表命名规则为R_表A_表B,R是Relative的缩写,如:R_User_Dept。
--字段命名规范:字段名为对字段属性的有意义的描述,可以用英语单词、单词缩写、汉语拼音、字段实际含义的拼音缩写等,单词首字母大写。
一般每一个表都有一个ID字段作为主键,统一以“ID”作后缀。
字段名中单词间不用任何分隔符。
举例: UserID,UserName,Address等。
字段命名时应尽量统一,用同样的缩写方式和命名方式,不要出现在不同的表中同样的字段名表达不同的含义,甚至字段类型不同。
--视图命名规范:格式:V_表A_表B_表C,V表示视图。
这个视图由几个表产生就用”_”连接几个表的名,如果表过多可以将表名适当简化,必须列出所有表名。
--存储过程命名规范:SP_表名_存储过程名(缩写),比如SP_User_Del,SP_User_AddData。
--函数命名规范:FN_表名_函数名(缩写)。
--触发器命名规范:TR_表名_[插入加I,修改加U,删除加D];操作前触发器(INSTEAD OF):TR_表名_OF[插入加I,修改加U,删除加D]。
--主键、外键关系、索引命名规范:主键: PK_表名(缩写);外键关系:FK_主表(缩写)_从表(缩写);索引:IDX_列名(缩写),复合索引列名间用_隔开。
--SQL语句编写规范:关键字大写,其他书写按上述命名规范。
在SQL语句比较长时,可以一个关键字新起一行。
比如:SELECT UserID, UserNameFROM UserWHERE UserID = ‘tom’;CREATE TABLE Cyber_Lab_Info(...);CREATE INDEX IDX_UserID ON ...;--术语与缩写解释:3. 数据库修改记录4. 表结构一卡通系统采用Oracle数据库,在定义表结构时注意Oracle与其他DBMS在数据类型上的不同。
4.0 公共用户表(UserPWDSeed)Create Table UserPWDSeed(UserName varchar2(64) Primary Key,PwdSeed varchar2(16) not null);Create Public Synonym UserPWDSeed For erPWDSeed;Create User dummyuser Identified By dummypwdDefault TableSpace Users Account Unlock;Grant Connect To dummyuser;Grant Select of UserPWDSeed To dummyuser;4.1 平台管理系统(PlatF)基础系列信息表/***************将部门、专业、班级、子系统、工作站临时表删除,修改管理员表、子系统表、工作站表,并添加管理员子系统关系表、子系统工作站关系表、管理员工作站关系表。
2004-07-25**************/1、单位信息表(LIBCARD.PlatF_Org_Info)CREATE TABLE LIBCARD.PlatF_Org_Info(OrgID number(6) not null, /*单位ID*/OrgName varchar2(40) not null, /*单位名称*/OrgSymbol blob null, /*单位标志*/CONSTRAINT PK_OrgInfo PRIMARY KEY (OrgID) /*定义主键*/);2、单位地址信息表(LIBCARD.PlatF_Org_Addr)CREATE TABLE LIBCARD.PlatF_Org_Addr(AddrID number(6) not null, /*单位地址ID*/Address varchar2(100) null, /*单位地址*/Zipcode char(6) null, /*邮政编码*/OrgPhone varchar2(100) null, /*单位电话*/CONSTRAINT PK_OrgAddr PRIMARY KEY (AddrID) /*定义主键*/);3、建筑物信息表(LIBCARD.PlatF_Buil_Info)CREATE TABLE LIBCARD.PlatF_Buil_Info(BuilID number(8) not null, /*建筑物ID*/BuilName varchar2(20) null, /*建筑物名称*/AddrID number(1) not null,/* 单位地址ID*/CONSTRAINT PK_BuilInfo PRIMARY KEY (BuilID), /*定义主键*//*BuilID字段与“单位地址信息表”中的“单位地址ID”关联之外键*/CONSTRAINT FK_BuilInfo_Addr FOREIGN KEY (AddrID) REFERENCES LIBCARD.PlatF_Org_Addr(AddrID));4、部门信息表(LIBCARD.PlatF_Dept_Info)CREATE TABLE LIBCARD.PlatF_Dept_Info(DeptID number(8) not null, /*部门ID*/DeptName varchar2(40) not null, /*部门名称*/DeptNumber number(4) null, /* 部门人数*/FromDate date null, /*起始时间*/ToDate date null, /*终止时间*/IsStudent Number(1) not null, /*是否下属学生*/Isteacher Number(1) not null, /*是否下属教工*/DeptDesc varchar2(200) null, /*部门描述*/CONSTRAINT PK_DeptInfo PRIMARY KEY (DeptID) /*定义主键*/);/***********************************已删除该表5、部门级别表(根据学校本身情况,可暂设为3级)(LIBCARD.PlatF_Dept_Level)CREATE TABLE LIBCARD.PlatF_Dept_Level(LevelID number(1) not null, /*级别ID*/LevelDesc varchar2(50) not null, /*级别描述*/CONSTRAINT PK_DeptLevel PRIMARY KEY (LevelID) /*定义主键*/);**********************/6、部门部门关系表(LIBCARD.PlatF_R_Dept)CREATE TABLE LIBCARD.PlatF_R_Dept (FromDeptID number(8) not null, /*上级部门ID*/ToDeptID number(8) not null, /*下级部门ID*/ FromDate date not null, /*起始时间*/ToDate date null, /*终止时间*/CONSTRAINT PK_RDept PRIMARY KEY (FromDeptID,ToDeptID,FromDate) /*定义主键*/ );7、专业信息表(LIBCARD.PlatF_Major_Info)CREATE TABLE LIBCARD.PlatF_Major_Info(MajorID number(8) not null, /*专业ID*/MajorName varchar2(50) not null, /*专业名称*/MajorDesc varchar2(200) null, /*专业描述*/FromDate date null, /*起始时间*/ToDate date null, /*终止时间*/CONSTRAINT PK_MajorInfo PRIMARY KEY (MajorID) /*定义主键*/);8、部门专业关系表(LIBCARD.PlatF_R_Dept_Major)CREATE TABLE LIBCARD.PlatF_R_Dept_Major (DeptID number(8) not null, /*部门ID*/MajorID number(8) not null, /*专业ID*/FromDate date not null, /*起始时间*/ToDate date null, /*终止时间*/CONSTRAINT PK_RDeptMajor PRIMARY KEY (DeptID,MajorID,FromDate), /*定义主键*/ /*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_RDeptMajor_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*MajorID字段与“专业信息表”中的“专业ID”关联之外键*/CONSTRAINT FK_RDeptMajor_Major FOREIGN KEY (MajorID) REFERENCES LIBCARD.PlatF_Major_Info (MajorID));9、班级信息表(LIBCARD.PlatF_Class_Info)CREATE TABLE LIBCARD.PlatF_Class_Info(ClassID number(12) not null, /*班级ID*/ClassName varchar2(20) not null, /*班级名称*/ClassDesc varchar2(100) null, /*班级描述*/FromDate date null, /*起始时间*/ToDate date null, /*终止时间*/Grade varchar2(6) null, /*年级*/CONSTRAINT PK_ClassInfo PRIMARY KEY (ClassID) /*定义主键*/);10、部门班级关系表(LIBCARD.PlatF_R_Dept_Class)CREATE TABLE LIBCARD.PlatF_R_Dept_Class (DeptID number(8) not null, /*所属最低级部门ID*/ClassID number(12) not null, /*班级ID*/CONSTRAINT PK_RDeptClass PRIMARY KEY (DeptID,ClassID), /*定义主键*//*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_RDeptClass_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*ClassID字段与“班级信息表”中的“班级ID”关联之外键*/CONSTRAINT FK_RDeptClass_Class FOREIGN KEY (ClassID) REFERENCES LIBCARD.PlatF_Class_Info (ClassID));用户信息系列表11、用户表(LIBCARD.PlatF_User)CREATE TABLE LIBCARD.PlatF_User(UserID char(11) not null, /*用户ID,由9位组成,1用户类别,2-3一级机构,4-5年份,6-9顺序号用户类别:0 中专,1 大专,2 本科,3 硕士,4 博士,5 教工,6 管理员,9 临时用户;*/UserClass char(1) not null, /*用户身份1 学生,2 教工,3 管理员,4 临时用户*/CONSTRAINT PK_User PRIMARY KEY (UserID) /*定义主键*/);用户类别标识表(erClass)CREATE TABLE LIBCARD.PlatF_UserClass(ClassID char(1) not null, /*用户类别ID */ClassName varchar2(20) not null, /*用户类别名称*/IsUsed number(1) not null, /*是否使用*/CONSTRAINT PK_UserClass PRIMARY KEY (ClassID) /*定义主键*/);一级机构表(LIBCARD.PlatF_FirstDept)CREATE TABLE LIBCARD.PlatF_FirstDept(DeptID number(8) not null, /*一级机构部门ID */ DeptSign char(2) not null, /*机构标识*//*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_FirstDept_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID));12、学生基本信息表(LIBCARD.PlatF_SUser_Info)CREATE TABLE LIBCARD.PlatF_SUser_Info(UserID char(11) not null, /*用户ID*/Name varchar2(30) not null, /*姓名*/Sex varchar2(2) null, /*性别*/UserNumber varchar2(20) null, /*学号*//*Grade varchar2(6) null, /*年级*/*/UserType char(1) null, /*类别*//*DeptID number(8) not null, /*所属最低级部门ID */*/MajorID number(8) not null, /*专业ID*/ClassID number(12) not null, /*班级ID*/EnroDate varchar2(10) null, /*入学时间*/Hometown varchar2(20) null, /*籍贯*/Nation varchar2(10) null, /*民族*/BirthDate char(10) null, /*出生年月*/IDcard char(18) null, /*身份证编号*/PolitState varchar2(12) null, /*政治面貌*/FaimlyAddr varchar2(100) null, /*家庭地址*/ZipCode char(6) null, /*家庭邮政编码*/ContWay varchar2(40) null, /*联系方式*/PersPhoto long raw null, /*个人照片*/BookBarCode varchar2(20) null, /*图书条码*/Sign Number(1) null, /*操作标志*/CONSTRAINT PK_SUserInfo PRIMARY KEY (UserID), /*定义主键*//*UserID字段与“用户表”中的“用户ID”关联之外键*/CONSTRAINT FK_SUserInfo_User FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_User (UserID),/*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_SUserInfo_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*MajorID字段与“专业信息表”中的“专业ID”关联之外键*/CONSTRAINT FK_SUserInfo_Major FOREIGN KEY (MajorID) REFERENCES LIBCARD.PlatF_Major_Info (MajorID),/*ClassID字段与“班级信息表”中的“班级ID”关联之外键*/CONSTRAINT FK_SUserInfo_Class FOREIGN KEY (ClassID) REFERENCES LIBCARD.PlatF_Class_Info (ClassID));13、教工信息表(LIBCARD.PlatF_TUser_Info)CREATE TABLE LIBCARD.PlatF_TUser_Info(UserID char(11) not null, /*用户ID*/Name varchar2(30) not null, /*姓名*/Sex char(2) null, /*性别*/UserNumber varchar2(20) null, /*教工号*/Headship varchar2(20) null, /*职务*/Title varchar2(20) null, /*职称*/EnroDate varchar2(10) null, /*入校时间*/Hometown varchar2(20) null, /*籍贯*/Nation varchar2(10) null, /*民族*/BirthDate char(10) null, /*出生年月*/IDcard char(18) null, /*身份证编号*/PolitState varchar2(12) null, /*政治面貌*/FaimlyAddr varchar2(100) null, /*家庭地址*/DeptID number(8) not null, /*所属最低级部门ID */BuilID number(8) not null, /*建筑物ID */RoomNumber varchar2(10) null, /*房间号*/ContWay varchar2(40) null, /*联系方式*/Email varchar2(20) null, /*电子邮件*/PersPhoto long raw null, /*个人照片*/BookBarCode varchar2(20) null, /*图书条码*/Sign Number(1) null, /*操作标志*/CONSTRAINT PK_TUserInfo PRIMARY KEY (UserID), /*定义主键*//*UserID字段与“用户表”中的“用户ID”关联之外键*/CONSTRAINT FK_TUserInfo_User FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_User (UserID),/*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_TUserInfo_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*BuilID字段与“建筑物信息表”中的“建筑物ID”关联之外键*/CONSTRAINT FK_TUserInfo_Buil FOREIGN KEY (BuilID) REFERENCES LIBCARD.PlatF_Buil_Info (BuilID));14、部门教工关系(LIBCARD.PlatF_R_Dept_TUser)CREATE TABLE LIBCARD.PlatF_R_Dept_TUser (DeptID number(8) not null, /*部门ID*/UserID char(11) not null, /*用户ID*/FromDate date not null, /*起始时间*/ToDate date null, /*终止时间*/CONSTRAINT PK_RDeptTUser PRIMARY KEY (DeptID,UserID,FromDate), /*定义主键*/ /*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_RDeptTUser_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*UserID字段与“教工信息表”中的“用户ID”关联之外键*/CONSTRAINT FK_RDeptTUser_TUser FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_TUser_Info (UserID));15、管理员信息表(LIBCARD.PlatF_Admin_Info)CREATE TABLE LIBCARD.PlatF_Admin_Info(UserID char(11) not null, /*用户ID*/UserName varchar2(20) not null, /*用户名*/PassWord varchar2(20) null, /*密码*/Name varchar2(30) not null, /*姓名*//*SystemID number(8) not null, /*子系统ID */WSID number(8) not null, /*工作站ID */RightID number(1) not null, /*权限标志ID */*/DeptID number(8) not null, /*所属最低级部门ID */BuilID number(8) not null, /*建筑物ID */RoomNumber varchar2(10) null, /*房间号*/ContWay varchar2(40) null, /*联系方式*/Email varchar2(20) null, /*电子邮件*/Sign Number(1) null, /*操作标志*/CONSTRAINT PK_AdminInfo PRIMARY KEY (UserID), /*定义主键*//*UserID字段与“用户表”中的“用户ID”关联之外键*/CONSTRAINT FK_AdminInfo_User FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_User (UserID),/***********************/*SystemID字段与“子系统信息表”中的“子系统ID”关联之外键*/CONSTRAINT FK_AdminInfo_System FOREIGN KEY (SystemID) REFERENCES LIBCARD.PlatF_System_Info (SystemID),/*WSID字段与“工作站信息表”中的“工作站ID”关联之外键*/CONSTRAINT FK_AdminInfo_WS FOREIGN KEY (WSID) REFERENCES LIBCARD.PlatF_WS_Info (WSID),/*RightID字段与“权限标志表”中的“权限标志ID”关联之外键*//*******CONSTRAINT FK_AdminInfo_Right FOREIGN KEY (RightID) REFERENCES LIBCARD.PlatF_Right_Info (RightID),**********/**************************//*DeptID字段与“部门信息表”中的“部门ID”关联之外键*/CONSTRAINT FK_AdminInfo_Dept FOREIGN KEY (DeptID) REFERENCES LIBCARD.PlatF_Dept_Info (DeptID),/*BuilID字段与“建筑物信息表”中的“建筑物ID”关联之外键*/CONSTRAINT FK_AdminInfo_Buil FOREIGN KEY (BuilID) REFERENCES LIBCARD.PlatF_Buil_Info (BuilID));权限系列表16、权限标志表(LIBCARD.PlatF_Right_Info)CREATE TABLE LIBCARD.PlatF_Right_Info (RightID number(1) not null, /*权限标志ID*/SystemID char(1) not null, /*子系统ID*/RightDesc varchar2(100) null, /*权限描述*/CONSTRAINT PK_RightInfo PRIMARY KEY (RightID,SystemID), /*定义主键*//*SystemID字段与“子系统信息表”中的“子系统ID”关联之外键*/CONSTRAINT FK_RightInfo_System FOREIGN KEY (SystemID) REFERENCES LIBCARD.PlatF_System_Info (SystemID));子系统系列表17、子系统信息表(LIBCARD.PlatF_System_Info)CREATE TABLE LIBCARD.PlatF_System_Info (SystemID char(1) not null, /*子系统ID*/SystemName varchar2(30) null, /*子系统名称*/CONSTRAINT PK_SystemInfo PRIMARY KEY (SystemID) /*定义主键*/);18、工作站信息表(LIBCARD.PlatF_WS_Info)CREATE TABLE LIBCARD.PlatF_WS_Info (WSID number(8) not null, /*工作站ID*/IPAddr varchar2(15) not null, /*IP地址*/MACAddr varchar2(30) not null, /*MAC地址*/RegDesc varchar2(50) null, /*注册信息*/ConfigDesc varchar2(100) null, /*配置描述*/BuilID number(8) not null, /*建筑物ID*/RoomNumber varchar2(10) null, /*房间号*/ContWay varchar2(40) null, /*联系方式*/CONSTRAINT PK_WSInfo PRIMARY KEY (WSID), /*定义主键*//*BuilID字段与“建筑物信息表”中的“建筑物ID”关联之外键*/CONSTRAINT FK_WSInfo_Buil FOREIGN KEY (BuilID) REFERENCES LIBCARD.PlatF_Buil_Info (BuilID)/**********************/*SystemID字段与“子系统信息表”中的“子系统ID”关联之外键*/CONSTRAINT FK_WSInfo_System FOREIGN KEY (SystemID) REFERENCES LIBCARD.PlatF_System_Info (SystemID)***************/);管理员子系统关系表(libcard.PlatF_R_Admin_System)CREATE TABLE LIBCARD.PlatF_R_Admin_System (UserID char(11) not null, /*管理员ID*/SystemID char(1) not null, /*子系统ID*/RightID number(1) not null, /*权限标志ID*/CONSTRAINT PK_RAdminSystem PRIMARY KEY (UserID,SystemID), /*定义主键*//*SystemID字段与“子系统信息表”中的“子系统ID”关联之外键*/CONSTRAINT FK_RAdminSystem_System FOREIGN KEY (SystemID) REFERENCES LIBCARD.PlatF_System_Info (SystemID),/*UserID字段与“管理员信息表”中的“管理员ID”关联之外键*/CONSTRAINT FK_RAdminSystem_Admin FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_Admin_Info (UserID));管理员工作站关系表(libcard.PlatF_R_Admin_WS)CREATE TABLE LIBCARD.PlatF_R_Admin_WS (UserID char(11) not null, /*管理员ID*/WSID number(8) not null, /*工作站ID*/CONSTRAINT PK_RAdminWS PRIMARY KEY (UserID,WSID), /*定义主键*//*WSID字段与“工作站信息表”中的“工作站ID”关联之外键*/CONSTRAINT FK_RAdminWS_WS FOREIGN KEY (WSID) REFERENCES LIBCARD.PlatF_WS_Info (WSID),/*UserID字段与“管理员信息表”中的“管理员ID”关联之外键*/CONSTRAINT FK_RAdminWS_Admin FOREIGN KEY (UserID) REFERENCES LIBCARD.PlatF_Admin_Info (UserID));子系统工作站关系表(libcard.PlatF_R_System_WS)CREATE TABLE LIBCARD.PlatF_R_System_WS (SystemID char(1) not null, /*子系统ID*/WSID number(8) not null, /*工作站ID*/CONSTRAINT PK_RSystemWS PRIMARY KEY (SystemID,WSID), /*定义主键*//*SystemID字段与“子系统信息表”中的“子系统ID”关联之外键*/CONSTRAINT FK_RSystemWS_System FOREIGN KEY (SystemID) REFERENCES LIBCARD.PlatF_System_Info (SystemID),/*WSID字段与“工作站信息表”中的“工作站ID”关联之外键*/CONSTRAINT FK_RSystemWS_WS FOREIGN KEY (WSID) REFERENCES LIBCARD.PlatF_WS_Info (WSID));临时系列表该系列表的表结构与其正式表结构基本相同,但ID字段不是主键,其中操作标志字段为空表示新增申请,为1表示修改申请,为0表示删除申请。