数据库表设计,用于在存在项目继承时处理订购项目

时间:2013-04-12 02:32:35

标签: mysql database-design

我对数据库有以下要求。它需要能够 商店物品。项目具有ID,标识符和标题。每个项目可以为零 或更多小部件和零或多个dodads。每个小部件和每个dodad都有一个 标题和类型。 Dodads也有默认值。也是顺序的 小部件和dodas需要保存。

我有以下表格来执行此操作:

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

所以现在我希望能够继承。多么容易,添加一个 parentId到items表。问题现在是小部件中的订单列 和dodad表。

继承的订购应该适用于父项的必须在其中 与父母相同的顺序,但孩子的项目可以是间隔的。那是 类似下面的内容应该是可行的:

P1
P2
C1
C2
P3
P4
C3

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

1 个答案:

答案 0 :(得分:0)

订单不是数据库概念,它是一种表示概念(就像数据在屏幕或报表中的呈现方式)。听起来你正在设计一个基于一种特定方式的存储结构,数据将显示给用户,这通常表明你的数据设计出现了问题。我无法确切地知道你究竟在找什么,因为你的P1 / P2 / C1 / C2示例没有显示任何小部件或小玩意儿,但我认为这是你遇到问题的程度。

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