我仍然是数据库设计的新手,我遇到了一些困难。
我有一个产品表,它有一个主要的类别和子类别属性,我很难为他们的数据库表和类图确定一个好的设计。
一个例子是Orange的main_category是“Fruit”,它的子类别是“果实”,另一个产品可能是Broccoli,它的main_category是“Vegetable”,它的子类别是“Fibrous Vegetables”。所以我认为子类别也在main_category下,根据所选的main_category,可以选择子类别列表。
我目前的设计是这样的:
======================= ======================= =====================
| PRODUCT | | SUBCATEGORY | | MAIN CATEGORY |
======================= ======================= =====================
| PK id | |PK id | |PK id |
| name | ---> | name | ---> | name |
| FK main_category_id | |FK main_category_id | =====================
| FK subcategory_id | ======================= ^
======================= --------------------------------------------------|
但是我对我目前的设计有疑问,并想询问你的意见,这个设计是否可以接受,或者是否有更好的设计方法。
另外,就OOP而言,这会是什么类型的关系?
答案 0 :(得分:0)
由于子类别也是一个类别,您可以将它们全部放在一个表中。你可能有这样的设计,
Product(id, name)
Category(id, name)
ProductMaincategoryAssignments(productId, categoryId)
ProductSubcategoryAssignments(productId, categoryId)
此处 productId 和 categoryId 是外键,引用产品中相应的 ID 和类别表。