Php 几个人共用的桌子

Php 几个人共用的桌子,php,mysql,database,Php,Mysql,Database,我经常使用这个:例如 Addresses -------- address_id street city … 及 当然,地址id是外键 只要我删除(或更新)一个共享地址,我就可以通过限制条件,按顺序删除(或更新)相关用户。我知道。 我设置为空 我想删除一个共享地址,当且仅当一个地址既没有商店也没有用户关联时 还是我做错了。我在这里要做的是将地址设置为商店和用户的父级。我不这么看。我把地址作为用户和商店的孩子。也许我应该这样做 Addresses --------- address_id … s

我经常使用这个:例如

Addresses
--------
address_id
street
city
…

当然,地址id是外键

只要我删除(或更新)一个共享地址,我就可以通过限制条件,按顺序删除(或更新)相关用户。我知道。 我设置为空

我想删除一个共享地址,当且仅当一个地址既没有商店也没有用户关联时

还是我做错了。我在这里要做的是将地址设置为商店和用户的父级。我不这么看。我把地址作为用户和商店的孩子。也许我应该这样做

Addresses
---------
address_id
…
shop_id
user_id

但我不喜欢这种方法,因为它对我来说太死板了。

没有任何内置方法可以做到这一点。您可以在
Users
Shops
表中删除后使用触发器来执行此操作。只要在shop和user表的外键定义中没有ON DELETE CASCADE,您就无法删除地址表中的相应项。@Barmar触发器是个好主意。但除此之外:这是我违反设计规则还是什么?像这样基于观点的问题不适合这样做。这个问题取决于tha申请的细节。在某些情况下,如果现在有依赖项使用主行,则保留主行是浪费空间,但在另一些情况下,保留主行是有意义的,这样它们就可以在将来使用。没有任何内置功能可以做到这一点。您可以在
Users
Shops
表中删除后使用触发器来执行此操作。只要在shop和user表的外键定义中没有ON DELETE CASCADE,您就无法删除地址表中的相应项。@Barmar触发器是个好主意。但除此之外:这是我违反设计规则还是什么?像这样基于观点的问题不适合这样做。这个问题取决于tha申请的细节。在某些情况下,如果现在有依赖项在使用主行,则保留主行是浪费空间,但在其他情况下,保留主行是有意义的,以便将来可以使用。
Addresses
---------
address_id
…
shop_id
user_id