gpt4 book ai didi

php - 如何在 3 个实体(项目、它们的类别和附加字段)之间创建数据库关系?

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:31 24 4
gpt4 key购买 nike

我正在尝试为一个简单的基于 Yii 的网站创建一个数据库(使用 MySQL)。它将包含一个商品目录,商品分为几类。我们的想法是有一种方法来添加额外的字段,特定于每个类别,并且这些字段应该可以为类别中的每种商品填写。

例如,如果我有一个类别“壁纸”,它们应该有额外的字段“颜色”、“镜头”、“制作”等。当然,每个壁纸项目必须以不同方式填写这些字段。

我为它创建了一个包含 4 个表的数据库:items(显然包含项目)、items_categories(包含 therm 的类别)、items_fields(包含附加字段)和 items_fields_values(多对多关系的支持表,其中还包含相关字段的值)。

My database schema diagram (您需要至少有 10 个声誉才能附加图像)

我使用的是 Yii 框架,模型中的关系是这样描述的:

元素型号:

return array(
'category' => array(self::BELONGS_TO, 'ItemCategory', 'category_id'),
'fields' => array(self::MANY_MANY, 'ItemField', 'items_fields_values(item_id, field_id)'),
);

项目字段模型:

return array(
'itemCategory' => array(self::BELONGS_TO, 'ItemCategory', 'item_category_id'),
'items' => array(self::MANY_MANY, 'Item', 'items_fields_values(field_id, item_id)'),
);

ItemCategory 模型:

return array(
'items' => array(self::HAS_MANY, 'Item', 'category_id'),
'itemsFields' => array(self::HAS_MANY, 'ItemField', 'item_category_id'),
);

我应该如何定义这些关系,以便能够输出、添加和编辑字段到类别及其值到特定项目?

最佳答案

您描述的是 EAV 数据模型(实体-属性-值)。

扩展可能会解决您访问数据的问题。看看https://github.com/yiiext/eav-behavior

关于php - 如何在 3 个实体(项目、它们的类别和附加字段)之间创建数据库关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645005/

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