gpt4 book ai didi

database-design - 无限共享和唯一项目分类的数据库设计模型

转载 作者:行者123 更新时间:2023-12-01 11:02:58 25 4
gpt4 key购买 nike

本质上,我想创建一个数据库结构,允许以无限种方式对无限量的库存项目进行分类,但是,其中许多项目共享某些“特征”。以 CarsTrucks 为例:

  • 两者都可以是红色蓝色
    • 任何颜色的汽车/卡车都可以是2wd4wd
      • 汽车可以有手动自动传输。
      • 卡车可以有皮革座椅
      • 等....

我希望避免的事情是手动输入存在的所有可能组合。有 5 种颜色和 5 辆车,这已经是 25 个条目并且没有特征集分类。

是否存在允许这些关系和共享“特征组”的数据模型,或者更重要的是,允许对我能想象到的任何数据集的每种可能组合进行单一引用的数据模型?任何帮助将不胜感激。

更新 [2012-01-23]

让我尽可能具体。我的主要目标是跟踪 Material 使用情况关于我们为预算和历史目的所做的工作。一些 Material ,即 studstrack,将共享相同的子分类,与track 还具有第 3 个子分类。有些人会完全不同的子分类。假设如下。

  • 5 个可能的metal_widths
  • 5 个可能的metal_gagues
  • 4 个可能的track_types
  • 5 个可能的insulation_widths
  • 3 种可能的insulation_types

...关系(可能的组合):

  • 螺柱 > metal_widths > metal_gagues (25)
  • 轨道 > metal_widths > metal_gagues > track_types (100)<
  • 绝缘 > insulation_widths > insulation_types (15)

只是为了了解我的最终目标,应用程序工作流将是像这样:

  1. 创造一份工作。
  2. 制定工作预算。
    • 为我希望使用的每种 Material 设置预算金额/成本。
  3. 开始输入 Material 发票。
    • 为发票上的每种 Material 设置金额/成本。
  4. 跟踪/查看我的预算估算与实际成本。

我认为我的预算与成本申请的目标非常简单,我只是想在之前正确设计 Material 相关的数据库向前进。我意识到最简单的解决方案是创建一个在 material 表中输入每个可能的组合并限制它数据库到 n 个可能的特征。问题是当我决定添加一个x width 螺柱,我还想添加一个x width 轨道,意思是我已经将可能的组合增加了 30,因此需要 30额外的条目(我真的宁愿避免)。

我的问题还是一样:是否有一个数据模型允许这些关系,更重要的是,是否存在允许单一引用的关系每种可能性的要点......,我应该划掉这个概念并继续每种 Material 的单个条目并限制特征的数量。

最佳答案

你的意思是这样的?

enter image description here

这个简单的模型允许您将特征组合在一起,然后将整个特征组“应用”到任意数量的项目(ITEM_TRAIT_GROUP 表是 M:N 关系的典型示例可以用关系范式表示)。如果您主要关心的是通过“重用”特征来避免重复,则此模型可能适合。

但是,这将不会强制执行:

  1. 特定项目类型的任何特定特征组(例如需要颜色的汽车)或特征之间的任何特定关系(例如座椅 Material 必须与座椅颜色搭配),
  2. 它也不会限制任何特定特征的值(例如颜色必须是“红色”或“蓝色”,但不能是“绿色”)。

(1) 和 (2) 需要某种类型系统,甚至需要“继承”(在 OOP 意义上),这在关系范式中并不有趣。如果您真的需要它,您最好在客户端或中间层强制执行这种逻辑。

可以对 (3) 进行合理的关系建模,但并非没有使模型复杂化,这可能值得也可能不值得付出努力。

关于database-design - 无限共享和唯一项目分类的数据库设计模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com