旅行社数据库系统

内蒙古科技大学课程设计说明书

constraint tourist2_id foreign key (tourist2_id) references tourist(tourist_id); alter table tourist add

constraint group1_id foreign key (group1_id) references tour(group_id); alter table tourist add

constraint staff1_id foreign key (staff1_id) references staff(staff_id);

41

内蒙古科技大学课程设计说明书

附录B:数据库编程规范

基本原则:

(1)以大小写敏感编写SQL语句。 (2)尽量使用Unicode 数据类型。 (3)优先使用连接代替子查询或嵌套查询。

(4)尽量使用参数化SQL查询代替语句拼接SQL查询。 (5)禁止使用[拼音]+[英语]的方式来命名SQL对象或变量。 命名规范 1.对象命名:

(1)数据库:采用Pascal样式命名,命名格式为[项目英文名称]。 (2) 关系型数据仓库:采用Pascal样式命名,命名格式为[项目英文名称] + DW。

(3) 数据架构:除SQL Server 系统定义的数据架构外,新建架构采用Pascal样式命名,命名格式为[架构名]。

(4)数据表:采用Pascal样式命名,命名格式为[表名]。

(5)数据视图:视图名称采用Pascal样式命名,命名格式为v + [视图名称]。

(6)数据列:列名称命名采用英文单词或缩写,英文单词只来自于具体业务定义,尽量表达清楚含义。尽量避免使用拼音命名,如果不可避

42

内蒙古科技大学课程设计说明书

免,对于比较短的列名,采用拼音全写,如果拼音列名比较复杂,可以采用首个字用全拼,其它字用首字母大写表示。采用Pascal样式命名,命名格式为[列名称]。

(7)存储过程:建议采用Pascal样式命名,命名格式为[存储过程名称]。

(8) 函数:自定义函数采用Pascal样式命名,命名格式为[函数名],系统函数使用全部大写。

(9)用户定义数据类型:采用Pascal样式命名,命名格式为[自定义数据类型名称]。

(10)DML触发器:DML 触发器是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。DML 事件包括对表或视图发出的 UPDATE、INSERT 或 DELETE 语句。根据事件不同命名规则使用前缀进行区分,格式为 [u|i|d] + [表名|视图名]

(11) DDL触发器:响应各种数据定义语言 (DDL) 事件而激发。这些事件主要与以关键字 CREATE、ALTER 和 DROP 开头的 Transact-SQL 语句对应。执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。

采用Camel样式命名,命名单词能够描述DDL触发器功能。 另外一种方式为添加dll前缀, (12)主键、外键关系和索引

主键: PK_[表名称]_[主键];如果是组合主键,使用PK_[表名]_[主键1]_[主键2]。

43

内蒙古科技大学课程设计说明书

外键关系:FK_[从表名称]_[主表名称]_[外键列名称]。 2. 参数命名

(1)数据列参数:命名格式为 @ + [列名称]。在列名不符合Pascal样式时(早期遗留系统),例如使用全部大写的列名称,或使用“_”进行连接的字段名称,参数名称定义使用 @ + [列名称]。

(2)非数据列参数:在参数无法跟列名称进行关联时,使用能够反映该参数功能的英文单词或单词组合, 采用Pascal样式命名。 T-SQL脚本

? ? ?

使用SET对变量赋值,不使用SELECT

对于SELECT/UPDATE语句必须显示的定义所有的列,避免使用星号 在执行SELECT/INSERT/UPDATE/DELETE语句时,请考虑执行规划的

重用,考虑用SP-EXECUTESQL存储过程

?

优先使用 SELECT...INTO,然后使用 INSERT...SELECT,以避免

大量死锁

? ? ?

如果需要删除所有的数据,用TRUNCATE TABLE 代替DELETE 避免使用DISTINCT 语句

如果你需要有限的记录,通过TOP N代替SET ROWCOUNT来控制排

序取值

?

避免使用SARGABLE的语句在WHERE子句,比如: OR,

<>, !=, !<, >!, IS NULL, NOT, NOT IN, NOT LIKE 和LIKE,因为这些操作很难利用已知的索引

?

避免使用NOT IN,可以采用IN,EXISTS NOT EXISTS和LEFT JOIN

加空值判断

44

联系客服:779662525#qq.com(#替换为@)