如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

楚格

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

例如,如果我具有“墙纸”类别,则它们应具有“颜色”,“脚注”,“外观”等附加字段。当然,对于每个墙纸项目,这些字段必须以不同的方式填充。

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

我的数据库架构图 (您必须至少具有10个信誉才能附加图像)

我正在使用Yii Framework,并以这种方式描述了模型中的关系:

物品模型:

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

ItemField模型:

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'),
        );

我应该如何定义这些关系,以便有一种方法可以输出,添加和编辑类别的字段,并将其值添加到特定项目?

哈兰·威尔顿(Harlan Wilton)

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

来自分类Dev

如何在图数据库中的节点之间创建两个关系

来自分类Dev

产品,类别和公司之间的数据库关系

来自分类Dev

VS2013数据库项目如何在解决方案中引用其他数据库项目

来自分类Dev

在表列和另一个数据库之间创建关系

来自分类Dev

如何设置数据库关系,以便一个类别可以属于多个父类别

来自分类Dev

如何设置数据库关系,以便一个类别可以属于多个父类别

来自分类Dev

从数据库获取值并根据其他字段对它们进行排序

来自分类Dev

如何创建一个从其他数据库接收数据,手动输入和数据导出的数据库以创建Web仪表板?

来自分类Dev

如何在与第一个模型(父模型)数据库实体相关的关系模型中插入记录

来自分类Dev

如何在两个Oracle RDS实例之间创建数据库链接

来自分类Dev

使用实体框架创建其他类(数据库中的代码优先)

来自分类Dev

当向数据库添加其他对象时,实体框架尝试创建用户

来自分类Dev

如何在 Azure SQL 数据库中对用户隐藏其他数据库?

来自分类Dev

在Django中定义一个用户和其他模型字段之间的关系

来自分类Dev

如果已将部署的数据库从其他来源更改,如何在Visual Studio 2013中更新SQL Server项目?

来自分类Dev

如何在laravel中创建3个模型之间的关系?

来自分类Dev

联接,外键和其他关系数据库计划

来自分类Dev

如何学习字段描述和可能的类别之间的关系

来自分类Dev

如何在MongoDB和Cassandra之间选择数据库

来自分类Dev

如何在MongoDB和Cassandra之间选择数据库

来自分类Dev

在数据库生成链接字段之前创建两个链接对象 - 实体框架

来自分类Dev

如何在没有与外键和主键相同的字段的两个表之间创建关系

来自分类Dev

项目已移至其他PC-无法创建数据库

来自分类Dev

如何从数据库中获取由其他属性组成的实体的属性?

来自分类Dev

Symyfony 3.4 - 如何将实体移动到其他数据库

来自分类Dev

如何在关系数据库中存储自定义实体属性

来自分类Dev

如何在关系数据库中存储自定义实体属性

来自分类Dev

初始化应用程序时,是否可以在数据库中的实体之间自动创建关系?

Related 相关文章

  1. 1

    如何在3个实体(项目,它们的类别和其他字段)之间创建数据库关系?

  2. 2

    如何在图数据库中的节点之间创建两个关系

  3. 3

    产品,类别和公司之间的数据库关系

  4. 4

    VS2013数据库项目如何在解决方案中引用其他数据库项目

  5. 5

    在表列和另一个数据库之间创建关系

  6. 6

    如何设置数据库关系,以便一个类别可以属于多个父类别

  7. 7

    如何设置数据库关系,以便一个类别可以属于多个父类别

  8. 8

    从数据库获取值并根据其他字段对它们进行排序

  9. 9

    如何创建一个从其他数据库接收数据,手动输入和数据导出的数据库以创建Web仪表板?

  10. 10

    如何在与第一个模型(父模型)数据库实体相关的关系模型中插入记录

  11. 11

    如何在两个Oracle RDS实例之间创建数据库链接

  12. 12

    使用实体框架创建其他类(数据库中的代码优先)

  13. 13

    当向数据库添加其他对象时,实体框架尝试创建用户

  14. 14

    如何在 Azure SQL 数据库中对用户隐藏其他数据库?

  15. 15

    在Django中定义一个用户和其他模型字段之间的关系

  16. 16

    如果已将部署的数据库从其他来源更改,如何在Visual Studio 2013中更新SQL Server项目?

  17. 17

    如何在laravel中创建3个模型之间的关系?

  18. 18

    联接,外键和其他关系数据库计划

  19. 19

    如何学习字段描述和可能的类别之间的关系

  20. 20

    如何在MongoDB和Cassandra之间选择数据库

  21. 21

    如何在MongoDB和Cassandra之间选择数据库

  22. 22

    在数据库生成链接字段之前创建两个链接对象 - 实体框架

  23. 23

    如何在没有与外键和主键相同的字段的两个表之间创建关系

  24. 24

    项目已移至其他PC-无法创建数据库

  25. 25

    如何从数据库中获取由其他属性组成的实体的属性?

  26. 26

    Symyfony 3.4 - 如何将实体移动到其他数据库

  27. 27

    如何在关系数据库中存储自定义实体属性

  28. 28

    如何在关系数据库中存储自定义实体属性

  29. 29

    初始化应用程序时,是否可以在数据库中的实体之间自动创建关系?

热门标签

归档