我有一张广告表,上面有两种推广方式的广告。它们可以在搜索结果中被推广,因此它们排在其他广告之前,或者它们可以被推广到首页,在那里随机选择几个被推广的广告。他们将在一段时间内得到提升。
我不确定如何最好地做到这一点。
另一个表为这些推广的广告,我应该有一个cron作业删除他们一旦到期,或...多么?
发布于 2010-02-17 10:00:30
我认为这里有两个概念,ad
和publication
。
具体说到数据库设计,这取决于您想要向publication
添加多少信息。
如果只是类型,您可以在同一个表中使用一个(可能是数字)字段。
如果你需要添加更多特定于publication
的信息,你最好为这些信息创建一个新的表格,这将打开一些有趣的设计问题,比如一个ad
是否只能有一个或多个不同的publications
(例如,首先出现并将其包含在邮件时事通讯中)。
发布于 2010-02-17 09:55:52
最好的做法是有一个第二个表,其中有一个指向ads表的外键,一个用于促销等级的列(如果需要的话),一个用于截止日期的列,以及一个显示它是首页、搜索还是以后要添加的其他内容的列。(例如:1代表搜索,2代表首页,或者分别是' search‘和'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'
https://stackoverflow.com/questions/2277795
复制相似问题