首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外键为空

外键为空
EN

Stack Overflow用户
提问于 2009-12-17 11:33:24
回答 3查看 1K关注 0票数 4

新手程序员来了。

我有3个表,即产品、类别和子类别。我这样配置他们的关系:

产品到类别:多对多

产品对子类别:一对一

子类别到类别:多对一

我添加了一个subcategory_id列,它是产品表中的外键(用于映射产品和子类别表)。如果一个产品有一个子类别,这是可行的。现在的问题是我的产品没有子类别。假定为subcategory_id列将为null,但这是不允许的。有解决这个问题的办法吗?我也认为关系配置与此有关。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-17 11:38:09

只要subcategory_id可以为空,您就应该能够添加一个外键,该外键将在该列不为空的所有情况下强制保持关系的完整性。这是一个相当常见的用例。

票数 4
EN

Stack Overflow用户

发布于 2009-12-17 11:49:43

产品到子类别:一对一

这不应该是产品对子类别:多对一

为什么不能将subcategory_id列设置为default null

票数 1
EN

Stack Overflow用户

发布于 2009-12-17 11:46:30

产品到类别:多对多

产品对子类别:一对一

子类别到类别:多对一

那也太没道理了。如果产品和子类别是一对一的,那么它们是同一个实体。或者他们是1比0/1?

无论如何,如果它们是一对一、一对零或一对一,那么每个产品都来自不同的子类别,并且每个子类别至多有一个产品分配给它。如果这是真的,那么产品就不可能是一对多的类别,子类别就不可能是一对多的类别。

想想看。如果单个产品可以有多个类别,但产品只能有一个子类别,则subCategory可以有多个类别,这与类别和子类别的基数相反:一对多

正常情况下,产品类别与SubCategories的关系如下:

Category to SubCategory一对多(每个类别有多个子类别-每个子类别只有一个类别)

subcategory to Product:一对多,每个子类别中可以有多个产品。但每种产品最多只能属于一个子类别。

你确定那不是你的结构吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1919285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档