这两张桌子的关系是什么?

时间:2014-07-30 15:37:36

标签: php

项目表

    protected static $_properties = array(
    'id',
    'product_code',
    'item_color_id',
    'item_size_type_id',
    'classification_id',
    'name',
    'display_name',
    'usual_price',
    'selling_price',
    'point_ratio',
    'description',
    'publish_start_datetime',
    'publish_end_datetime',
    'publish_flag',
    'created_at',
    'updated_at',
    'deleted_at',
);

图片表:

    protected static $_properties = array(
    'id',
    'file_name',
    'content_type',
    'created_at',
    'updated_at',
    'deleted_at'
);

item_image表:

    protected static $_properties = array(
    'id',
    'item_id',
    'image_id',
    'type',
    'view_order'
);

为什么需要item_image表?项目和图像的关系是什么?多对多还是一对多? 问题是当我插入图像表时没有错误,但如果我从图像表中删除将出现错误(外键问题)。为什么会这样?如何从表中删除图像。

2 个答案:

答案 0 :(得分:0)

通常,此类设置是itemsimages之间存在多对多关系。 item_image允许您在任意次item和任何image之间设置关系。您在从image表中删除时遇到问题,因为它与item_image表中的行有关。您首先必须删除item_image中包含该图像的任何关系,然后从image表中删除该行。

数据库以这种方式设置,以便您的关系不会过时或孤立。如果从image表中删除一行,但在item_image中留下与已删除行相关的行,那么关系将指向任何内容并可能导致问题。

假设这是一种典型的多对多关系,如果您不了解数据库的结构,则应在进行任何更改之前与制作该数据库的人员进行交谈。

答案 1 :(得分:0)

如果我错了,请纠正我。根据数据库,这可能是多对多关系,因为在item_imageitems之间创建了images表。

因此,如果您要删除图片表中的项目,则首先必须检查idimage的{​​{1}}是否存储在item中。如果它存在,那么您可以从item_image

中删除id表格imageimage_id的图片