【问题标题】:Is this how a modern news site would handle it's sql/business logic?这是现代新闻网站处理它的 sql/业务逻辑的方式吗?
【发布时间】:2011-01-13 17:15:47
【问题描述】:

基本上,下图代表了我正在处理的网站主页上的组件,其中到处都有新闻组件。 sql sn-ps 设想了我认为它们应该如何工作,但我非常感谢以前与新闻网站合作过的人提供的一些业务逻辑建议。这是我的设想:

问题 #1:sql 逻辑有意义吗?您可以看到任何警告/缺陷吗?

我的架构是这样的:

articles:

article_id int unsigned not null primary key,
article_permalink varchar(100),
article_name varchar(100),
article_snippet text,
article_full text
article_type tinyint(3) default 1

我会将所有文章(主要特色、次要特色、其余)存储在一个表中,我将按 type 列对它们进行分类,这将对应于我的 news_types 表中的一个数字(例如我使用文字文本,因为它更容易理解)。

问题 #1.1:不同类型的文章依赖一个表格可以吗?

一篇新闻文章可以有 3 种图片类型:

  • 1x 原始图片大小,仅显示在文章的永久链接页面上
  • 1x 主要特色图片,将显示在首页部分 #1
  • 1x 子特色图片,将显示在首页部分 #2

现在我希望每篇文章对应一张图片而不是多张图片。不过,用户可以在article_full TEXT 列中发布文章的图片。

问题 #1.2:我不知道应该如何将文章图像合并到我的架构中,这种依赖于 2 个表的架构是否常见?

article_image_links:

article_id article_image_id
1          1

article_images:

article_image_id article_image_url
1                media.site.com/articles/blah.jpg

数据要求:

从我的 sql 逻辑来看,必须有一些数据才能显示内容..

  • 必须至少有一篇main 类型的文章
  • 必须至少有四个featured 类型的文章,它们在主要文章的下方

问题 #1.3:如果数据丢失,我是否应该费心创建特殊情况?例如,如果没有主要专题文章,我应该选择最新的专题文章,还是应该要求有人始终指定主要文章?

问题#1.4:在管理员中,当用户发帖时,默认情况下我会有一个指定文章类型的下拉菜单,normal 将被预先选择,它会可以选择mainfeatured。因此,如果用户在某一时刻决定更改文章类型,他/她可以这样做。

问题 #1.5:我的精选文章和主要文章的工作方式仅在最新日期之前。例如,如果用户希望将一篇较旧的文章指定为主要文章,我应该创建自定义逻辑,还是只告诉他们更新文章日期以使其晚于最新文章?

【问题讨论】:

  • 如果我想将一篇文章移到不同的组中,你会如何处理?
  • 添加了 q #1.4 以供输入,谢谢。
  • 它可能会帮助您提及您将使用哪种 DB/SQL。

标签: sql mysql django database-design business-logic


【解决方案1】:

关于标题中的问题,剥猫皮的方法肯定不止一种。适合一个站点的可能不适合另一个站点。影响您决策的一些因素是网站需要扩展多大(例如,会有几十篇文章还是数百万篇文章?)以及谁将输入数据(例如,您需要建立多少白痴防护在)。我会根据您提供的信息尽量回答问题。

问题 #1: 是的,我觉得很好。请务必设置索引(我会将索引放在 [type,date] 和 [category,type,date] 上)。

问题 #1.1: 是的,我会说没关系,事实上,我会说这是首选。如果我正确理解了这个问题(这与每个“类型”的表格相反),那么如果您愿意,这可以让您更好地在未来添加新类型。

问题#1.2:如果您只希望每个故事一个图像,每个图像一个故事,我看不到将其拆分为额外表格的优势。似乎它只是更多的开销。但我可能会在这里遗漏一些东西。

问题 #1.3: 这是您的设计决定,这里没有“正确”的答案。这完全取决于您对系统的预期用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2012-05-04
    • 2011-02-07
    • 2011-05-01
    • 2013-04-28
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多