我有一个广告表,广告可以通过两种方式进行宣传。它们可以在搜索结果中进行宣传,因此它们可以提升到其他搜索结果之前,也可以将它们提升到首页,随机选择一些提升的广告。他们将被提升一段时间。
我不确定如何做到这一点。
这些推广广告的另一个表格,我应该有一个cron作业,一旦它们到期就删除它们,或者......怎么样?
答案 0 :(得分:1)
我认为这里有两个概念,ad
和publication
。
具体谈论数据库设计,取决于您要添加到publication
的信息量。
如果它只是类型,你可以使用同一个表中的(可能是数字)字段。
如果您需要添加更多publication
具体信息,最好使用新表格,这会打开一些有趣的设计问题,例如ad
只能有一个或多个不同publications
(首先显示,并将其包含在邮件简报中)。
答案 1 :(得分:0)
最好的方法是拥有第二个表,其中包含广告表的外键,促销排名列(如果需要),到期日期列以及显示是否是首页的列,搜索,或稍后要添加的任何其他内容。 (即:1表示搜索,2表示首页,或分别是'搜索'和'front_page')
选择要宣传的广告时,您可以从AD_PROMOTION表中进行选择并将其加入ADS表。然后,当过期日期消失时,不是使用cronjob来杀死它,而是在选择它时降级或删除它。
while (ad != null) {
ad = getRandomAd()
if (ad.expires < now()) {
demote(ad);
ad = null; // Make sure you get another one
}
}
当然,您需要采取一些措施来确保在某些时候结束广告,因为您可能没有任何宣传广告。
ADS
AD_ID INFORMATION
----- -----------
1 'Max Power'
2 'Min Power'
3 'Homer Simpson'
AD_PROMOTION
AD_ID LEVEL EXPIRATION_DATE PLACE
----- ----- --------------- -----
2 2 2010-02-18 'search'
3 3 2010-03-01 'front_page'
3 2 2010-04-01 'search'