订单表---存储过程

订单表字段

Id, OrderId(订单号), Address(收货地址), TotalMoney(需支付金额), UserId(用户), SubTime(下单时间), Remark(备注),State(订单状态), UnitPrice(每件商品的的单价),   BookId(商品的编号)

1        100001        武汉              3000                36         2015               哈哈哈哈    0        89    4567       

2        100001        武汉              3000                36         2015               哈哈哈哈    0        98     9087

这样建表  冗余太多

办法:把公共的字段放到主表里,把单独的字段放到另外一张表中

主      外

主表:Id, OrderId(订单号), Address(收货地址), TotalMoney(需支付金额), UserId(用户), SubTime(下单时间), Remark(备注),State(订单状态), 

外表:UnitPrice(每件商品的的单价),   BookId(商品的编号)


存储过程:

好处:sql语句执行速度比较快,原因:存储过程只需要编译一次,后续不需要再次编译,程序中的sql语句每次请求都需要在编译一下;web服务器往数据库服务器发送的只是存储过程的名字;安全性比较好,不会出现sql注入,类似于加参数的sql语句

缺点:可移植性比较差,例如:sqlserver有一个存储过程,换成mysql或者sqlLite(没有存储过程)

什么时候用存储过程?

一般互联网的项目、电商等不会用存储过程;一般内网系统会用存储过程,内网系统一般不会更换数据库,查询速度快


订单号有没有必要由程序传给存储过程,完全可以在存储过程中按照某个规则生成?

下完订单后需要支付,发给支付宝的数据肯定有一个订单号,如果订单号是在存储过程中按照某个规则生成的话,那么还需要把订单号返回到程序中,程序接收后,在发给支付宝;但是如果是在程序中生成一个订单号,我们就可以直接发给支付宝了,就不需要存储过程再把这个值返回来了,


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值