Php 插入多对多数据库和取消后的逻辑

Php 插入多对多数据库和取消后的逻辑,php,mysql,sql,database,Php,Mysql,Sql,Database,我正在建立一个网站,我有一点php和sql的知识。 当涉及到数据库中的多对多关系时,我会遇到很多问题 我有针对每种材料的特定产品,例如,2种材料不能有相同的产品 材料有皮革、仿皮革、布料、PVC 使用领域是指材料可以使用的领域:运动、休闲、工作 问题是,材料可以用于许多领域,并且一个领域关联了许多材料,所以它是N:M 一个产品可以用于许多领域,一个领域可以用于许多产品,所以它太N:M了 例如,皮革可用于工作、运动、工作、运动和办公室的布料 产品可用于某些或所有应用领域,反之亦然 要实现这一点,更

我正在建立一个网站,我有一点php和sql的知识。 当涉及到数据库中的多对多关系时,我会遇到很多问题

我有针对每种材料的特定产品,例如,2种材料不能有相同的产品

材料有皮革、仿皮革、布料、PVC

使用领域是指材料可以使用的领域:运动、休闲、工作

问题是,材料可以用于许多领域,并且一个领域关联了许多材料,所以它是N:M

一个产品可以用于许多领域,一个领域可以用于许多产品,所以它太N:M了

例如,皮革可用于工作、运动、工作、运动和办公室的布料

产品可用于某些或所有应用领域,反之亦然

要实现这一点,更好的架构是A还是B

产品始终具有相同的材料应用领域,不能是属于具有材料不具有的应用领域的材料的产品

A B

如果我理解正确,多对多关系在两者之间使用中间表

因此,在数据库中插入数据和值时,我所拥有的是:

材料

1皮革

2布

物料应用字段

1 1 1 2 2 2 应用领域

1恶心 2休闲 这样,皮革有两个应用领域。但是我如何才能以一种聪明的方式填满中间的桌子呢

也 当我想取消某些东西时,哪种架构更好?
我应该从所有表格中取消吗?

如果我正确理解您的问题,下面的解决方案应该有效。请记住,它们可能是您的问题的多个正确解决方案,而且我并没有实际测试此代码,因此可能会出现拼写错误

创建表应用程序应用程序id int无符号非空自动增量主键,材质枚举'leather'、'semi leather'、'cloth'、'PVC',使用枚举'sport'、'leisure'、'work'

在应用材料中插入,使用“皮革”和“工作”值


在应用材料中插入“皮革”、“休闲”值

这是另一个很好的解决方案:

创建表物料物料id TINYNY无符号非空自动增量主键,物料varchar60

创建表使用use_id tinyiny无符号非空自动增量主键,使用varchar60

创建表应用程序应用程序\u id int unsigned not null自动增量主键,material tinyint unsigned,use tinyint unsigned,active tinyint unsigned default=1

在应用程序材料中插入,使用值

问号代表材料的ID和使用的ID

最好不要从表中实际删除行。相反,您可能希望禁用它们。试试这个:

更新应用程序集活动=0,其中应用程序_id=

更新应用程序设置为活动=0,其中材质=1,使用=2


更新应用程序集激活=0,其中材质=从材质中选择材质\u id,其中材质=皮革,使用=从使用中选择使用\u id,其中使用=运动

我只是想帮忙。也许下次你可以澄清你的问题,然后自动否决我的回答。好的。对这个假设感到抱歉。