1

我对数据库设计还是个新手,我遇到了一些困难。

我有一个产品表,它有一个主类别和子类别属性,我很难为他们的数据库表和类图确定一个好的设计。

例如,橙子的 main_category 为“Fruit”,其子类别为“pulpy 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 而言,这将是什么类型的关系?

4

1 回答 1

0

由于子类别也是类别,因此您可以将它们全部放在一个表中。你可能有这样的设计,

Product(id, name)

Category(id, name)

ProductMaincategoryAssignments(productId, categoryId)

ProductSubcategoryAssignments(productId, categoryId)

这里productIdcategoryId是外键,它们引用ProductCategory表中的相应id 。

于 2013-03-14T07:54:04.093 回答