抛块砖:调度定义表:
调度定义ID int 主键
广告ID int 不说明了
开始时刻 int 从0点开始的分钟数
结束时刻 int 从0点开始的分钟数
显示次数 int
点击数 int
开始日期 datetime
结束日期 datetime
Type int -1--仅开始日期这一天
-2--第4点,(还没好好理解)
间隔时间 int 分钟数,(是否需要?)
第5点已有方案,这里没有考虑
调度定义ID int 主键
广告ID int 不说明了
开始时刻 int 从0点开始的分钟数
结束时刻 int 从0点开始的分钟数
显示次数 int
点击数 int
开始日期 datetime
结束日期 datetime
Type int -1--仅开始日期这一天
-2--第4点,(还没好好理解)
间隔时间 int 分钟数,(是否需要?)
第5点已有方案,这里没有考虑
-2--第4点,(还没好好理解)
1以上,间隔的天数,如1-每天,2-每两天,7-每周,30-每月等等
ID,Type(0=Between BeginDateTime and EndDateTime; 1=Is Daily ;2=Is Weekly ;3=Is Monthly),MaxViewCount,MaxClickCount,BeginTime,EndTime,BeginDate,EndDateADSchedules
ID,ADID,ScheduleID
需另外增加一个计数表,
DaliyCount
ID,ADID,DATE,ViewCount,ClickCount (已经显示或点击的次数)
1,123,20004/04/10,10,2
2,100,20004/04/10,1000,15
....只是这样检索当前有效的ADID还是比较复杂.
DaliyCount
ID,ADID,DATE,ViewCount,ClickCount,LastViewDateTime,LastClickDateTime (已经显示或点击的次数)
1,123,20004/04/10,10,2
2,100,20004/04/10,1000,15
....这样时间间隔值不能放在Schedules表中,应该是某一个广告的属性.
CREATE TABLE [sysjobschedules] (
[schedule_id] [int] IDENTITY (1, 1) NOT NULL ,
[job_id] [uniqueidentifier] NOT NULL ,
[name] [nvarchar] (128) NOT NULL ,
[enabled] [int] NOT NULL ,
[freq_type] [int] NOT NULL ,
[freq_interval] [int] NOT NULL ,
[freq_subday_type] [int] NOT NULL ,
[freq_subday_interval] [int] NOT NULL ,
[freq_relative_interval] [int] NOT NULL ,
[freq_recurrence_factor] [int] NOT NULL ,
[active_start_date] [int] NOT NULL ,
[active_end_date] [int] NOT NULL ,
[active_start_time] [int] NOT NULL ,
[active_end_time] [int] NOT NULL ,
[next_run_date] [int] NOT NULL ,
[next_run_time] [int] NOT NULL ,
[date_created] [datetime] NOT NULL
)
GO
我拷贝在这里,可能会比较乱列名 数据类型 描述
schedule_id int 调度 ID。
job_id uniqueidentifier 作业 ID。
name sysname 调度的名称。
enabled int 调度的启用状态。
freq_type int 调度执行的频率:
1 = 一次
4 = 每天
8 = 每周
16 = 每月
32 = 每月相对信息
64 = 在 SQL Server
代理程序启动时执行
freq_interval int 表示调度运行日期的值。
如果 freq_type 是 4(每天),则该值是每隔 freq_interval 天。如果 freq_type 是 8(每周),则该值是表示周调度运行日期的位掩码。freq_interval 值是:1 = 星期日
2 = 星期一
4 = 星期二
8 = 星期三
16 = 星期四
32 = 星期五
64 = 星期六如果 freq_type 是 16(每月),则该值是月中的 freq_interval 天。如果 freq_type 是 32(每月相对信息),则 freq_interval 可以是下列值之一:1 = 星期日
2 = 星期一
3 = 星期二
4 = 星期三
5 = 星期四
6 = 星期五
7 = 星期六
8 = 日
9 = 工作日
10 = 周末
freq_subday_type int freq_subday_interval 的单位:
1 = 以指定的时间
2 = 秒
4 = 分钟
8 = 小时
freq_subday_interval int 在每个已调度作业执行之间发生的 freq_subday_type 周期数。
freq_relative_
interval int 当 freq_type 是 32(每月相对信息)时,每月已调度作业的 freq_interval 发生:
1 = 第一个
2 = 第二个
4 = 第三个
8 = 第四个
16 = 最后一个
freq_recurrence_
factor int 在已调度作业执行之间的星期数或月份数。
active_start_date int 开始执行作业的日期。
active_end_date int 停止执行作业的日期。
active_start_time int 开始执行作业的时间。
active_end_time int 停止执行作业的时间。
next_run_date int 下一次执行作业的日期。
next_run_time int 下一次执行作业的时间。
date_created datetime 已调度作业项的创建日期。
每周一11点
每周一、三、五11点
每周一11到15点每5分钟一次
每月12号等等
比较灵活
你有MaxViewCount,MaxClickCount来控制可以不考虑间隔时间。
Schedules需要增加对type更深定义的字段,比如周一还是周二
广告表本来就是要连接的,只是这样需要四个表的连接查询,加上优先级需要一个附加表,一共五个表,唉~~~