如何构建一个到可选到多个数据库?
How to structure one to optional to many database?
我正在为一家报纸创建一个网站。它的所有文章都有一个部分,大多数文章都直接在其部分下:/section_name/article_name
。但是,有些文章不属于他们的部门——它们在一个小节下:/section_name/subsection_name/article_name/
。我将如何构建这个数据库,其中并非所有文章都在一个小节下?
我最初的想法是ONE Section has MANY Subsections has MANY Articles
。但是,我将如何处理 "optional subsection" 问题呢?
一种解决方案是建立两个关系:ONE Subsection has MANY Articles
和 ONE Section has MANY Articles
。这样,一篇文章就可以同时在节和小节中。但是,这对我来说似乎并不直观。 Subsection
与 Section
完全无关?还有其他解决办法吗?
另请注意:要求使用以下参数的文章:/:section_name(/:subsection_name)/:article_name
,其中冒号表示参数,括号表示可选参数。
- 您自己建议的方式,但在小节之间添加外键。
- 为每个部分建立默认或 'main' 小节,这样所有文章都只链接到一个小节。
- 使用单个 section/subsection table 和 'parent section' 列。这将允许 section/subsection 嵌套到任何深度,您可能希望使用应用程序规则对其进行控制。
编辑:
在第三种方法中,section/subsection table 自身将有一个外键。如果不为空,则该外键标识父部分。此结构可以表示任何宽度或深度的子部分的树,并且文章可以与该树中的任何部分相关联。这种类型的结构对于您概述的简单场景来说可能有些过分,但它足够灵活以适应您的概念模型的某些扩展而无需更改物理结构。
我正在为一家报纸创建一个网站。它的所有文章都有一个部分,大多数文章都直接在其部分下:/section_name/article_name
。但是,有些文章不属于他们的部门——它们在一个小节下:/section_name/subsection_name/article_name/
。我将如何构建这个数据库,其中并非所有文章都在一个小节下?
我最初的想法是ONE Section has MANY Subsections has MANY Articles
。但是,我将如何处理 "optional subsection" 问题呢?
一种解决方案是建立两个关系:ONE Subsection has MANY Articles
和 ONE Section has MANY Articles
。这样,一篇文章就可以同时在节和小节中。但是,这对我来说似乎并不直观。 Subsection
与 Section
完全无关?还有其他解决办法吗?
另请注意:要求使用以下参数的文章:/:section_name(/:subsection_name)/:article_name
,其中冒号表示参数,括号表示可选参数。
- 您自己建议的方式,但在小节之间添加外键。
- 为每个部分建立默认或 'main' 小节,这样所有文章都只链接到一个小节。
- 使用单个 section/subsection table 和 'parent section' 列。这将允许 section/subsection 嵌套到任何深度,您可能希望使用应用程序规则对其进行控制。
编辑: 在第三种方法中,section/subsection table 自身将有一个外键。如果不为空,则该外键标识父部分。此结构可以表示任何宽度或深度的子部分的树,并且文章可以与该树中的任何部分相关联。这种类型的结构对于您概述的简单场景来说可能有些过分,但它足够灵活以适应您的概念模型的某些扩展而无需更改物理结构。