可以推广的广告数据库设计

时间:2010-02-17 01:45:55

标签: database-design

我有一个广告表,广告可以通过两种方式进行宣传。它们可以在搜索结果中进行宣传,因此它们可以提升到其他搜索结果之前,也可以将它们提升到首页,随机选择一些提升的广告。他们将被提升一段时间。

我不确定如何做到这一点。

这些推广广告的另一个表格,我应该有一个cron作业,一旦它们到期就删除它们,或者......怎么样?

2 个答案:

答案 0 :(得分:1)

我认为这里有两个概念,adpublication

具体谈论数据库设计,取决于您要添加到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'