管理和链接分层数据

时间:2018-12-10 17:28:24

标签: mysql sql database data-modeling

因此在我的应用程序数据库中,我有一个业务资料实体,该实体具有:

  • 一个主要的类别(例如,餐厅,酒店,医院等)
  • 无限的子类别(例如披萨餐厅,意大利餐厅等)
  • 无限的产品(例如芝士比萨饼,意大利辣香肠比萨饼等)
  • 无限的服务(例如接送服务,送货服务等)

P.S。我以“餐厅”类别为例来演示其子类别/服务/产品实体,但实际上可以是任何东西。

首先:我可以使用类似邻接表模型的方式来定义无限的类别及其对应的子类别,但是服务和< strong>产品实体?知道服务产品子类别实体的子代,我如何将它们彼此链接?

现在这就是我所拥有的: Figure-1

第二:如何映射每个公司资料及其类别/子类别/产品/服务?这样我才能知道每个业务资料属于哪个类别,每个业务资料具有哪些子类别/产品/服务。

这是我目前的映射: Figure-2

我还是数据库新手,我正在努力使该数据库尽可能高效,因为它将收到大量流量。作为数据库方案,我现在已经有效吗?还是需要更深入地研究数据库设计概念?

1 个答案:

答案 0 :(得分:0)

当我阅读此问题时,我担心它会具有复杂的树形结构,但是到目前为止,阅读您的作品非常简洁。

就我个人而言,我认为您走在正确的道路上,并且会做一些记录:

  • 将服务和产品链接到子类别并不难,您还可以轻松地将业务和产品/服务链接起来。我认为这不必是一棵树。创建记录时只需执行此限制。
  • 邻接表模型对于需要轻松查找子树的任意深度的树很有意义,但是我不确定是否适合您的问题,尤其是因为:

    1. 您没有任意深度。您只有父母和子类别。
    2. 对于类似业务类别系统的项目,条目数可能足够低,因此不值得增加额外的复杂性。读取整个表并将其保存在内存中可能非常快。

如果您希望将服务和产品链接到子类别和子类别,最简单的方法可能是拥有一个类别表,并且让每个类别都有一个parent_id,该名称可能为空。