zoukankan      html  css  js  c++  java
  • 关于广告位管理系统设计广告位销售记录表的设计

    需求:

          广告位表 P(编号,名称,目录,规格)

          广告位有三种状态,空闲,试用,已售

          一个广告位只能有一条当前有效销售记录(ETime>Now),不能在S表中添加开始时间不是当前时间使用记录,当然不能把以后的时间提前买给别的用户(预售)

      状态转换

         空闲--(启用)-->试用|已售

         试用--(转正)-->已售

         试用|已售--(中止)-->空闲

         试用|已售---(调整)-->试用|已售 注意,试用调整后依旧是试用,已售也一样

         试用|已售--(到期)--->空闲

         已售---(继费)-->已售

    ------------------------------------

        广告位的状态由销售表计算获得,需要能查看广告位的操作记录(状态转换前后记录)

       网站上有,有多用户并发的情况,需要启用事务--在状态转换时锁定销售记录表

       销售记录表S(编号,负责人,操作,开始时间,结束时间,广告位编号,状态,转换,IsCut,...)

      说明 S.BTime开始时间,S.ETime 结束时间

      IsCut=1表示为历史记录(可以考试使用历史表)不过直接标记成IsCut更便捷

      ------------------------------------

     查询空闲广告位

    Select ... From(

      Select p.编号,Max(s.ETime)

       P Left S On P.编号=S.广告位编号

       s.IsCut=0

      Group by P.编号) as t inner join 其他关联表

    Where t.ETime < getdate() or  (t.ETime is null) 

    -------------------------------------------------

    查询使用广告位(试用,已售)

    Select ... From p inner join S On p.编号=S.广告位编号

    Where s.IsCut=0 And s.Etime >=getdate()

     状态转换:

    1.读取S表的广告位编号为xxx并且ETime>=getdate() And IsCut=0的记录

    2.锁定S表,再次判断 IsCut=0是否成立

    3.设置IsCut=1

    4.插入状态改变后的新记录IsCut=0

    5.释放锁

  • 相关阅读:
    虚拟机VMware配置centos7集群(亲测有效)
    linux虚拟机克隆后,虚拟机ping不通的解决方法
    VC++使用 GDI+等比例缩放图片,并且居中显示
    VS2015 编译OSG Plugins Giflib静态库
    Qt 读写文件操作
    OSG 常用快捷键(全屏、查看帧数、截屏)
    Navicat Premium v15 中文最新破解版(附:激活工具)
    redis 持久化机制及配置
    Redis 五种数据类型
    linux 安装redis
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1767382.html
Copyright © 2011-2022 走看看