数据库设计模型,用于无限共享和唯一项目分类

bsc*_*fer 3 database-design classification

本质上,我想创建一个数据库结构,允许以无限的方式对无限量的库存项目进行分类,但是,这些项目中的许多项目共享某些"特征".举个例子,Cars然后Trucks:

  • 两者都可以是redblue仅是.
    • 彩色汽车/卡车可以是2wd4wd.
      • Cars可以拥有manualautomatic传播.
      • Trucks可有clothleather座位
      • 等等....

我希望避免的是手动输入存在的每种可能的组合.有5种颜色和5种车辆,已经有25个条目,没有功能集分类.

是否存在允许这些关系和共享"特征组"的数据模型,或者更重要的是,是否允许单个引用我可以想象的任何数据集的每个可能组合?任何帮助将不胜感激.

更新[2012-01-23]

让我尽可能具体.我的主要目标是跟踪我们为预算和历史目的而做的工作的材料使用情况.一些材料,即螺柱轨道,将共享相同的子分类, 轨道具有第三子分类.有些人会有完全不同的分类.假设如下.

  • 5可能 metal_widths
  • 5可能 metal_gagues
  • 4可能 track_types
  • 5可能 insulation_widths
  • 3可能 insulation_types

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

  • Studs> metal_widths> metal_gagues(25)
  • Track> metal_widths> metal_gagues> track_types(100)
  • Insulation> insulation_widths> insulation_types(15)

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

  1. 创造一份工作.
  2. 创建工作预算.
    • 为我期望使用的每种材料设置预算金额/成本.
  3. 开始输入物料发票.
    • 为发票上的每种物料设置金额/成本.
  4. 跟踪/审核我的预算估算值与实际成本.

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

我的问题仍然是一样的:是否存在允许这些关系的数据模型,更重要的是,是否存在允许每种可能性的单个参考点的数据模型...... 或者,我是否应该抓住这个概念并对每种材料使用单个条目并限制特征的数量.

Bra*_*vic 5

你的意思是这样的?

在此输入图像描述

这个简单的模型允许您将特征组合在一起,然后将整个特征组 "应用" 到任意数量的项目(ITEM_TRAIT_GROUP表是如何在关系范例中表示M:N关系的典型示例).如果您主要关注的是避免通过"重复使用"特征来重复,那么这个模型可能符合要求.

但是,这不会强制执行:

  1. 特定物品类别(例如需要颜色的汽车)的任何特定特征组,以及特征之间的任何特定关系(例如座椅材料必须与座椅颜色一起),
  2. 它也不会限制任何特定特征的值(例如颜色必须是"红色"或"蓝色"但不是,例如,"绿色").

(1)和(2)将要求某种类型的系统甚至"继承"(在OOP意义上),这在关系范式中是没有乐趣的.如果你真的需要它,你可能会更好地在客户端或中间层强制执行这种逻辑.

(3)可以合理地建模,但不能使模型复杂化,这可能是也可能不值得付出努力.