Database design 可推广广告的数据库设计

Database design 可推广广告的数据库设计,database-design,Database Design,我有一个广告表,里面有两种可以推广的广告。它们可以在搜索结果中被提升,因此排在其他广告之前,也可以被提升到头版,在头版中随机选择一些被提升的广告。他们将被提升一段时间 我不知道如何最好地做到这一点 另一个表用于这些促销广告,我是否应该有一个cron作业在广告过期后删除它们,或者。。。如何使用?最好是有第二个表,其中包含ads表的外键、促销排名栏(如果需要)、过期日期栏,以及显示是首页、搜索还是以后要添加的其他内容的栏。(即:1个用于搜索,2个用于首页,或分别为“搜索”和“首页”) 选择要促销的广

我有一个广告表,里面有两种可以推广的广告。它们可以在搜索结果中被提升,因此排在其他广告之前,也可以被提升到头版,在头版中随机选择一些被提升的广告。他们将被提升一段时间

我不知道如何最好地做到这一点


另一个表用于这些促销广告,我是否应该有一个cron作业在广告过期后删除它们,或者。。。如何使用?

最好是有第二个表,其中包含ads表的外键、促销排名栏(如果需要)、过期日期栏,以及显示是首页、搜索还是以后要添加的其他内容的栏。(即:1个用于搜索,2个用于首页,或分别为“搜索”和“首页”)

选择要促销的广告时,从广告促销表中进行选择,并将其加入广告表。然后,与其在过期日期过后使用cronjob杀死它,不如在选择它时将其降级或删除

while (ad != null) {
    ad = getRandomAd()
    if (ad.expires < now()) {
        demote(ad);
        ad = null; // Make sure you get another one
    }
}

我认为这里有两个概念,广告和出版物

具体说来,数据库设计取决于您希望向
出版物添加多少信息

如果只是类型,可以在同一个表中使用一个(可能是数字)字段


如果您需要添加更多的
出版物
特定信息,最好为这些信息创建一个新的表格,这会引发一些有趣的设计问题,例如
广告
是否只能有一个或多个不同的
出版物
(首先出现,并将其包含在邮件时事通讯中).

但该广告可以同时在头版和搜索结果中发布,但没有提到这一部分。编辑我的答案以考虑到这一点。不,一对多。该广告可以在搜索结果和首页上立即升级OK,显然您需要两张表格。我认为在不久的将来获得第三种晋升的可能性相当大。数据库设计是你不想涉足的领域之一,我想是的。那么,如何最好地处理过期的促销活动呢?您可能永远不会删除促销活动,但有一个expires字段,当您查询促销活动时,您可以执行类似于
Select*from promotions where expires>date.now()
或其他操作(我对sql很在行,但希望您理解我的意思)通过这种策略,您可以保留所有促销活动的历史记录,这样您就可以知道哪些广告更受宣传(更好的客户)。
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'