新手程序员来了。
我有3个表,即产品、类别和子类别。我这样配置他们的关系:
产品到类别:多对多
产品对子类别:一对一
子类别到类别:多对一
我添加了一个subcategory_id列,它是产品表中的外键(用于映射产品和子类别表)。如果一个产品有一个子类别,这是可行的。现在的问题是我的产品没有子类别。假定为subcategory_id列将为null,但这是不允许的。有解决这个问题的办法吗?我也认为关系配置与此有关。有什么想法吗?
发布于 2009-12-17 11:38:09
只要subcategory_id可以为空,您就应该能够添加一个外键,该外键将在该列不为空的所有情况下强制保持关系的完整性。这是一个相当常见的用例。
发布于 2009-12-17 11:49:43
产品到子类别:一对一
这不应该是产品对子类别:多对一
为什么不能将subcategory_id列设置为default null
发布于 2009-12-17 11:46:30
产品到类别:多对多
产品对子类别:一对一
子类别到类别:多对一
那也太没道理了。如果产品和子类别是一对一的,那么它们是同一个实体。或者他们是1比0/1?
无论如何,如果它们是一对一、一对零或一对一,那么每个产品都来自不同的子类别,并且每个子类别至多有一个产品分配给它。如果这是真的,那么产品就不可能是一对多的类别,子类别就不可能是一对多的类别。
想想看。如果单个产品可以有多个类别,但产品只能有一个子类别,则subCategory可以有多个类别,这与类别和子类别的基数相反:一对多
正常情况下,产品类别与SubCategories的关系如下:
Category to SubCategory一对多(每个类别有多个子类别-每个子类别只有一个类别)
subcategory to Product:一对多,每个子类别中可以有多个产品。但每种产品最多只能属于一个子类别。
你确定那不是你的结构吗?
https://stackoverflow.com/questions/1919285
复制相似问题