我已经创建了一个包含3个表的数据库:
产品
分类
子分类
在我的产品表中,我有一个类别和一个子类别列:
| product_name | category | subcategory|
----------------------------------------
| varchar | int | int |
截至目前,类别列引用类别表ID,子类别列引用子类别ID。
categories列有一个id和一个category name列:
| id | category_name |
----------------------
|int | varchar |
子类别列具有id,子类别和父列,它是引用类别(id)列的外键。
| id | subcategory_name | parent |
---------------------------------
|int | varchar | int |
我想知道是否有办法在产品的“子类别”列中添加约束,以便只有在父类别的合法子项中才能添加值。
如果已经回答了这个问题,请原谅我。我不知道我正在做什么的正确名称。
答案 0 :(得分:0)
1 - 您可以在插入/更新子猫ID之前使用程序进行验证
2 - 或者您可以在每次交易后使用触发器
3 - 或者您可以重新设计类别和子类别表,这取决于您的类别数据的外观。
例如:
id category_name
---- -------------
10 cat 10
1011 kid of cat 10
20 cat 20
2020 kid of cat 20
4 - 如果您不喜欢上述设计,您也可以这样设计:
id category parent_id
---- ------------- -----
10 cat 10 0
1010 kid of cat 10 10
20 cat 20 0
2020 kid of cat 20 20