小编Jac*_*son的帖子

标准化数据库中产品特征的雄辩关系?

我已经浏览了几十个 Eloquent 问题,但是这些例子通常很容易掌握。例如,一个用户有一个电话或一个类别有很多帖子。

我正在尝试存储产品功能并在它们之间建立关系,同时保持数据库尽可能接近规范化,否则很容易将每个组合及其数据存储在一行中。

考虑一个产品,它可以具有许多特征(材料、尺寸、重量、颜色等)。分配给产品的每个特征只能有一个值,例如,材料是木材。

为了避免重复条目,我将功能和值保存在单独的表中。因为例如 Wood 可以被 Material 和 Texture 使用。

这是我的数据库结构:

feature
  - id
  - name ( E.g. Material )

feature_value
  - id
  - value ( E.g. Wood, must be unique )

feature_value_combination
  - id
  - id_feature
  - id_value

product_feature
  - id
  - id_product
  - id_combination
Run Code Online (Sandbox Code Playgroud)

这样我也可以将它们分组并防止重复。但是我很难理解这些之间的关系,因为很多关系都可以工作。我的问题是:

  • 我需要多少 Eloquent?组合需要自己的 Eloquent 吗?
  • 这里有什么关系?因为有道理,afeature value属于一个组合,也有一个组合,同时属于一个特征名称和一个产品,而且一个产品也可以有一个特征,一个值,一个组合。这里的一切似乎都混乱了。

对澄清这一点的任何帮助表示赞赏。

更新

我设法设置了基本关系,但代价是创建 5 个模型,即使是数据透视表也是如此。

楷模:

  • M1) 产品
  • M2) 特征名称
  • M3) 特征值
  • M4) 功能名称值
  • M5) ProductFeatureNameValueRelation

现在我可以使用以下方法获取产品及其功能数据: …

laravel eloquent

5
推荐指数
0
解决办法
32
查看次数

标签 统计

eloquent ×1

laravel ×1