数据库设计(触发器,游标,视图,函数)

数据库设计(触发器,游标,视图,函数)

环境准备:

Microsoft SQL Server Management Studio 18 2012以上;

一、触发器

是一个特殊的存储过程,是由数据库自己在某种场景下触发的;自然是去执行一些业务逻辑;

A.事发前----Insert,插入一条数据之前,可以指定一个知性逻辑

B.事发之后—Update,触发点什么动作;user 表冗余公司表的公司名称,公司名称修改后,需要在使用了公司名称的表中去更新数据;就可以使用触发器;

建议:建议大家少用,一定要注意嵌套式触发器

坑:系统性能,容易造成死循环;

二、游标

游标是从一个数据结果集中获取某一个数据;比较冷门;

在工作使用过的刷个1–(看文档)—基本上没用过

三、视图

在系统中,可以说是必备的;专用用来做查询操作;

一个虚拟的表,由一条复杂的Sql语句来完成的;----主要是一个种补救措施;

缺陷:性能没有保障;

四、函数

更多的是使用的系统函数;

建议—建议大家最多就是去使用系统函数;也可以自定义函数,字段在使用函数以后,不会索引;----函数毁索引

五、字段类型

表和表之间同一字段----一定要定义为同一个类型;如果同一字段类型不一致,语句查询会报错,肯定需要来函数处理----会影响性能—不走索引;

六、字段可空

数值类型的 不要可空;

in查询 not in查询 会没有结果,,一般给个默认值

也有特殊场景:可以为空;创建时间

默认值:创建时间----当前时间,存金额(不要设置默认值)

七、统计字段

完全是为了我们程序开发者便捷而存在的,数据不丢失;

创建时间、创建人、最后更新时间、最后更新人、state、isEnable

假删除/软删除–state----如果要删除,不是直接把数据给干掉了,没有delete语句,只是把数据状态修改,表示当前数据不可用了,当前数据不丢失;

软删除后,查询的时候,需要增加判断条件;

设计:

权限=通过角色配置的权限+临时权限

求并集—视图

展示界面的时候没有的权限是不能展示出来,在操作的时候需要拦截验证权限;----业务操作不能完全信赖客户端;

如果表太多,需要确定权限------必然会影响性能;

如何解决呢?

1.缓存(程序缓存)----推荐----关联查询只查询一次;查询之后就缓存起来;后续就直接到缓存中去取;如果权限重新配置了,记得刷新缓存;

2.还可以把设置到的权限数据保存到一个表(还是缓存)中去(保存到用户中的某一个字段中)

多级菜单:

怎么保存?ParentId(父级Id),当前按钮信息保存一个父级Id,如果要获取菜单,就可以通过最高级,获取到最后一集;

多级code拼接、层级都是违背了范式,但是这里的情况,我比较推崇大家这样做;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YSの陈憨憨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值