ERD 到关系模式:如何转换这种自引用的 m-to-m 关系?
ERD to relation schema: How to convert this self-referencing m-to-m relationship?
给出的问题
一个位置可以有多个类别标签。类别具有层次结构,并且它具有多个子类别,例如类别是教育,子类别是大学、高中、学前班等
鉴于此 ERD:
如何正确地将其转换为关系模式?
我的解决方案
- 位置(location_id,地址,姓名,描述,x_coords,y_coords)
由于 Location 和 Category 之间存在多对多关系:
- 位置类别(location_id,category_name)
类别具有自引用多对多关系
类别(category_name)
子类别(subcategory_name,category_name)
我认为我上面的解决方案是错误的。我的关系模式的问题是 LocationCategory 只能存储 category_name 而不能存储子 category_name。对于 category_name 本身,在子类别中,如果该类别有多个子类别,则无法捕获子category_name。
我想我在 Category 中的自引用多对多关系上犯了一个错误。并且这个 Category 实体没有任何其他属性。有什么特殊的方法可以解决这个问题吗?即创建关系模式,使位置能够链接到类别和子类别?还是我对图表的理解有误?
“我的关系模式的问题是 LocationCategory 只能存储 category_name 而不能存储子 category_name。”
那就干脆存起来吧,f。 e.像这样:
注意:cat_id
不需要存储在locationCategory
table中,因为subcat_id
决定了cat_id
,但是为了更方便查询它会有帮助。
给出的问题
一个位置可以有多个类别标签。类别具有层次结构,并且它具有多个子类别,例如类别是教育,子类别是大学、高中、学前班等
鉴于此 ERD:
如何正确地将其转换为关系模式?
我的解决方案
- 位置(location_id,地址,姓名,描述,x_coords,y_coords)
由于 Location 和 Category 之间存在多对多关系:
- 位置类别(location_id,category_name)
类别具有自引用多对多关系
类别(category_name)
子类别(subcategory_name,category_name)
我认为我上面的解决方案是错误的。我的关系模式的问题是 LocationCategory 只能存储 category_name 而不能存储子 category_name。对于 category_name 本身,在子类别中,如果该类别有多个子类别,则无法捕获子category_name。
我想我在 Category 中的自引用多对多关系上犯了一个错误。并且这个 Category 实体没有任何其他属性。有什么特殊的方法可以解决这个问题吗?即创建关系模式,使位置能够链接到类别和子类别?还是我对图表的理解有误?
“我的关系模式的问题是 LocationCategory 只能存储 category_name 而不能存储子 category_name。”
那就干脆存起来吧,f。 e.像这样:
注意:cat_id
不需要存储在locationCategory
table中,因为subcat_id
决定了cat_id
,但是为了更方便查询它会有帮助。