用 PHP 操作联结表

Posted

技术标签:

【中文标题】用 PHP 操作联结表【英文标题】:Manipulating junction table with PHP 【发布时间】:2015-12-23 14:31:15 【问题描述】:

我正在使用 php 创建应用程序,该应用程序使用 mysql DB 来管理数据。 表格是这样的:

user         purchasing      medicine
____         ________        ________
id_user      id_user         id_medicine
username     id_medic        item

什么是真正的假冒我.. 应该在我更新用户和药表后在采购(联结表)中插入值? 我应该为此使用交易吗?

第二个问题是,id_user 和 id_medic 在联结表、索引还是唯一的?

对不起,我忘记了一个 mysql。 提前致谢

【问题讨论】:

此时您要求解决方案,但您没有提供您想要应用的业务规则,即如果我们不知道您需要什么,我们无法建议索引或唯一性。 是的,您必须先在用户和药物中插入值,然后才能插入购买。否则,您将不知道 id_user 或 id_medic。关于交易,这取决于几件事……交易是一个安全网。例如,如果您需要保证在没有购买记录的情况下不会插入用户,那么是的,您将需要使用事务。 【参考方案1】:

    您应该先插入medicine 表。因为,如果您正确设置数据库,purchasing.id_medic 应该引用medicine.id_medicine,因此,如果之前没有添加这样的id_medicine,插入purchasing 表应该会失败。 (是的,如果您认为在插入一些行后有可能回滚,您应该使用事务。

    purchasing 表中,id_userid_medic 都应该是索引,但它是否应该是唯一的取决于您的用例。例如:

    如果您认为任何用户只能购买一件商品,那么id_user 应该是唯一的。

    如果您认为任何商品不能多次出售,id_medic 应该是唯一的。

    如果您认为任何用户只能购买任何物品一次,那么id_userid_medic 应该有一个唯一约束

【讨论】:

以上是关于用 PHP 操作联结表的主要内容,如果未能解决你的问题,请参考以下文章

入门大数据---SparkSQL联结操作

sql中如何实现级联表的操作

MySQL必知应会-第15章-联结表

Yii2 Select2 - 更新时选择的值 - 联结表(多对多)

联表操作

MySQL必知必会读书笔记-5(表的联结)