SQL数据库设计规范及如何设置外键

20个数据库设计最佳实践:


  1. 使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。
  2. 数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。 
  3. 数据表名不要使用空格。 
  4. 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。 
  5. 数据库中的密码要加密,到应用中再解密。 
  6. 使用整数作为ID字段,也许现在没有这个必要,但是将来需要,例如关联表,索引等等。
  7. 使用整数字段做索引,否则会带来很大的性能问题 。
  8. 使用 bit 作为布尔字段,使用整数或者varcha是浪费。同时,这类字段应该以“Is”开头。 
  9. 要经过认证才能访问数据库,不要给每一个用户管理员权限。 
  10. 尽量避免使用“select *”,而使用“select [required_column_list]”以获得更好的性能。
  11. 假如程序代码比较复杂,使用ORM框架,例如hibernate,iBatis。ORM框架的性能问题可以通过详细的配置去解决。 
  12. 分割不常使用的数据表到不同的物理存储以获得更好的性能。 
  13. 对于关键数据库,使用安全备份系统,例如集群,同步等等。 
  14. 使用外键,非空等限制来保证数据的完整性,不要把所有的东西都扔给程序。 
  15. 缺乏数据库文档是致命的。你应该为你的数据库设计写文档,包括触发器、存储过程和其他脚本。 
  16. 对于经常使用的查询和大型数据表,要使用索引。数据分析工具可以帮助你决定如何建立索引。 
  17. 数据库服务器和网页服务器应该放在不同的机器上。这回提高安全性,并减轻CPU压力。 
  18. Image和blob字段不应该定义在常用的数据表中,否则会影响性能。 
  19. 范式(Normalization)要按照要求使用以提高性能。Normalization做的不够会导致数据冗余,而过度Normalization 会导致太多的join和数据表,这两种情况都会影响性能。 
  20. 多花点时间在数据库设计上,否则你将来会付出加倍的时间来偿还。


设置外键:

方法一:SQL语句

alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete cascade


方法二:

不想写sql 语句也可以直接用图形化操作 选择你要创建外键的表,反键选择修改表,点击 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
附录 2 SQL Server 数据库命名与编码规范 一.数据库对象命名基本规范 1. 总体命名规范 名称的长度不超过 32 个字符。 名称采用英文单词、英文单词缩写和数字,单词之间用"_"分隔。 说明:除非用户提供文档化的行业标准(例如,国标或部颁标准),否则不得违反本规 范。 数据库对象名称首字母必须小写。 不得采用"_"作为名称的起始字母和终止字母。 名称必须望文知意。 名称不得与数据库管理系统保留字冲突。 不要在对象名的字符之间留空格。 2. 数据库数据库名定义为系统名+模块名,或直接采用系统名。 数据库名全部采用小写。 3. 数据库文件 数据文件命名采用数据库名+_+文件类型+[文件序号].文件后缀,文件序号为 1、2、 3…9 等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时 可不加。 文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf。 文件名全部采用小写。 4. 表 表命名要遵循以下原则: 采用"系统名+_+t_+模块名+_+表义名"格式构成。 若数据库中只含有单个模块,命名可采用"系统名+t_+表义名"格式构成。 整个表名的长度不要超过 30 个字符。 系统名、模块名均采用小写字符。 模块名或表义名均以其英文单词命名,且字符间不加分割符;表义名中单词的首 字符大写,其它字符小写,多个单词间也不加任何分割符,单词全部采用单数形 式。 表别名命名规则:取表义名的前 3 个字符加最后一个字符。如果存在冲突,适当 增加字符(如取表义名的前 4 个字符加最后一个字符等)。 关联表命名为 Re_表 A_表 B,Re 是 Relative 的缩写,表 A 和表 B 均采用其表义名 或缩写形式。 数据库设计规范 数据库中不论是表名还是字段名,都一律用英文,不准出现其它语言; 为了不增加数据库当中的表名的长度, 一般不允许出现如 Form 或者 Table 的字样, 如:记录表:应为 Record,而不是 RecordTable 数据库当中的表名的命名,不允许出现空格,假如有几个单词出现的话,每个单 词之间用 " _" 隔开如人事信息表: 应为 Human_Info, 而不是 Human Info; 每个单词的第一个字母必须大写;如果太长,为了不增加编程的难度可采用缩写 的方式,每个单词可取三到四个字母表示,也可根据实际情况,实际习惯进行缩 写 5. 属性(列或字段) 属性命名遵循以下原则: 采用有意义的列名,为实际含义的英文单词,且字符间不加任何分割符。 属性名前不要加表名等作为前缀。 属性后不加任何类型标识作为后缀。 不要使用"ID"等与系统保留关键字冲突的单词作为列名。 6. 主键 任何表都必须定义主键。 表主键命名为:"pk+_+表名(或缩写)+_+主键标识"。 7. 外键外键命名为:"fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识"。 8. 索引 索引的命名为:"表名(或缩写)+_+列名+_idx"。 其中多单词组成的属性列列名取前几个单词首字符,加末单词组成。 9. Default 标识 由"df+_+<default 标识名>"组成。 10. Rule 标识 由"ru+_+<Rule 标识名>"组成。 11. 自定义数据类型 自定义数据类型由"ud+_+<自定义数据类型标识>+_+<数据类型>"组成。 12. 触发器 AFTER 型触发器: 系统名+tr_+<表名>_+<i,u,d 的任意组合>, 其中 i, u, d 分别表示 insert、 update 和 delete。 INSTEAD OF 型触发器: 系统名+ti_+<表名>+_+<i,u,d 的任意组合>, 其中 i, u, d 分别表示 insert、 update 和 delete。 13. 视图 视图命名以系统名+v_+模块名作为前缀,其他命名规则和表的命名类似。 14. 存储过程 存储过程命名由"系统名+sp+_+存储过程标识(缩写)"组成。 存储过程标识要以实际含义的英文单词构成,并用下划线分割各个组成部分。 15. 函数 函数命名由"系统名+f+_+函数标识"组成。 16. 变量名 参数变量命名采用"i (o 或 io)+_+ 名称"形式, 前缀 i 或 o 表示输入还是输出参数。 过程变量命名采用"l+_+名称"形式。 变量名采用小写,若属于词组形式,用下划线分隔每个单词。 17. 角色 全部使用小写字符命名。 由"系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)"组成。 18. 用户 全部使用小写字符命名。 由"系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)"组成。 二.Transact-SQL 编程基本规范 1. 一般性注释 注释可以

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值