2017-06-19 27 views
0

我正在为报纸创建一个网站。其所有文章都有一个部分,大多数文章直接位于其部分:/section_name/article_name。但是,有些文章并非直接隶属于他们的部门 - 他们属于第/section_name/subsection_name/article_name/。我将如何构建这个数据库,并不是所有的文章都在一个小节下?我最初的想法是ONE Section has MANY Subsections has MANY Articles。但是,我将如何处理“可选分部”问题?如何构建一个可选的许多数据库?

一个解决方案是有两个关系:ONE Subsection has MANY ArticlesONE Section has MANY Articles。这样,一篇文章可以在一个章节和一个小节中。但是,这对我来说并不直观, SubsectionSection完全没有关系?还有其他解决方案吗?

只是另一个注释:请求一篇文章,其中有以下参数:/:section_name(/:subsection_name)/:article_name,其中冒号标记参数,圆括号标记可选参数。

回答

0
  1. 你自己建议的方式,但是从子部分添加一个外键到部分。
  2. 为每个部分建立默认或“主要”子部分,因此所有文章仅链接到子部分。
  3. 使用带有“父节”列的单节/子节表。这将允许部分/子部分嵌套到任何深度,您可能想要使用应用程序规则进行控制。

编辑: 在第三种方法中,section/subsection表将有一个外键本身。如果不为空,则该外键标识父节。该结构可以表示任何宽度或深度的小节树,并且文章可以与该树中的任何节相关联。这种类型的结构对于您所描述的简单场景而言可能过于夸张,但足够灵活以适应您概念模型的某些扩展,而无需更改物理结构。

+0

你能解释一下你的第三个解决方案吗? –

+0

@JasonKao:按请求编辑。 –

相关问题