我是数据库设计的新手,只是想了解一下我是否以逻辑的方式来解决这个问题。我正在构建一个简单的MySQL数据库,通过它,用户可以将项目上载到先前存在的(不变的)分层树中。关于层次化MySQL数据库设计的建议
对于一个简单的例子:
第一节
司1.1
分区1.1.1
分区1.1.2
司1.2
分区1.2.1
分区1.2.2
第2节
司2.1
分区2.1.1
分区2.1.2
司2.2
分区2.2.1
分区2.2.2
树是不会改变的结构,用户将只需上传产品,将属于细分下(行业特定的方式组织大量的产品)。我已经完成了关于邻接列表和嵌套集合的研究,但是我倾向于分别引用其父母主键的3个独立表格(因为树的顶层几乎不会改变)。当新产品上传时,它会引用它的所有三个父母(如果它是根据细分1.1.2提交的,它必然是第1部分第1部分的一部分)。最终的树会有4个部分,每个部分有10个部门,每个部门有10个部门。这是否有意义作为一个启动策略?
与数据库的交互作用或多或少地局限于输入信息并对其进行准确分类,然后能够显示已在部门,部门或细分部门中提交的产品数量。该库将显示在一系列下拉列表中,并且单击列表项将弹出存储的信息。
任何建议或参考文献/教程将不胜感激!
如果你永远不会超过3个关卡,那么你可以'便宜'并且只需要'(section_id,div_id,subdiv_id)'并且把它全部保存在一张表中。但它会很容易受到像sec#1,div 2.1,subsec 1.1.1这样的等级错误的影响。 – 2012-03-22 19:57:13
我同意Marc B的结构是技术层次结构,但它的结构不够动态以保证高级数据结构。您可以通过简单的限制避免类别错误 – 2012-03-22 20:11:58
非常感谢Marc和David!大卫,你可以通过简单的约束扩展你的意思吗?马克B,如果所有的产品都被要求分配到一个小部分(比如“Bill's Macintosh苹果园”在美国水果>苹果>麦金塔下归档),那么我刚才说我会有一张描述不变树的桌子,然后是第二个表,其中包含“Bill's Macintosh Apple Orchard”的特定信息和ID以及对其父级subdiv_id的引用?我希望这是明确的:) – TheNally 2012-03-23 01:21:49