如果我没有设置foreign key relationship
,拥有delete or update constraints
有什么好处?
假设我有一个用户可以发布用于转售的项目的表格。
item_id item_product_id item_title other_fields
1 1 New TV for sale ...
1 1 Old TV for sale ...
1 2 Radio for sale ...
产品表将是:
product_id product_name
1 TV
2 Radio
现在,如果从product
移除product table
,我也不希望删除这些项目。用户可以看到他的商品不再存在,并且可以选择另一个最合适的产品。所以我的问题是 - 如果这是我的structure and logic
,使用foreign keys
链接项目和产品表是否有任何好处?
或者,如果商品中有foreign key
条目,我是否能够从产品中删除?
答案 0 :(得分:1)
一个优点是您的RDMS不会让您在开始时插入无效数据。如果没有ID为5的产品,那么您将完全无法为其创建项目(无论是来自mysql命令行的脚本还是)。这属于数据完整性的标题。
此外,您可能值得结帐this question
答案 1 :(得分:0)
或者,如果项目中有外键条目,我甚至可以从产品中删除吗?
不,你不会,除非你指定ON DELETE CASCADE
或ON DELETE SET NULL
。
除非items
中有匹配的记录,否则您无法插入products
。