0

我对数据库有以下要求。它需要能够存储物品。项目有一个 id、标识符和标题。每个项目可以有零个或多个小部件和零个或多个 dodad。每个小部件和每个 dodad 都有一个标题和一个类型。Dodads 也有一个默认值。还需要保存小部件和 doda 的顺序。

我有以下表格可以做到这一点:

items  widgets  dodads
-----  -------  ------
id     id       id
ident  itemId   itemId
title  title    title
       type     type
       order    order
                default

所以现在我希望能够拥有继承权。这很容易,将 parentId 添加到 items 表中。现在的问题是小部件和 dodad 表中的订单列。

继承的排序应该起作用,即父项的项目必须与父项的顺序相同,但子项的项目可以是interwhoven。这应该是可行的:

P1
P2
C1
C2
P3
P4
C3

所以问题是如何存储小部件和 dodads 的整体顺序?我想我需要另一张桌子,但不确定最好的方法。如果表结构可以处理多个父母,那就太好了。

4

1 回答 1

0

订单不是数据库概念,而是表示概念(就像数据在屏幕或报告中的显示方式一样)。听起来您正在根据一种特定的数据向用户显示的方式设计存储结构,这通常表明您的数据设计有问题。我无法确定您到底在寻找什么,因为您的 P1/P2/C1/C2 示例没有显示任何小部件或装饰物,但我认为这就是您遇到问题的级别。

半相关:如果小部件和装饰物之间的唯一区别是“默认”列,为什么不将它们与其他类型或类别列放在同一个表中?如果问题的一部分是在同一个列表中对小部件和装饰物进行排序,这将有所帮助。

于 2013-04-12T02:46:38.983 回答