Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库表设计,用于在存在项继承时处理排序项_Mysql_Database Design - Fatal编程技术网

Mysql 数据库表设计,用于在存在项继承时处理排序项

Mysql 数据库表设计,用于在存在项继承时处理排序项,mysql,database-design,Mysql,Database Design,我对数据库有以下要求。它需要能够 储存物品。项目具有id、标识符和标题。每个项目可以有零个 一个或多个小部件和零个或多个DoDAD。每个小部件和每个dodad都有一个 标题和类型。DoDAD也有一个默认值。还有 小部件和doda需要保存 我有以下表格来完成这项工作: items widgets dodads ----- ------- ------ id id id ident itemId itemId title title title

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

我有以下表格来完成这项工作:

items  widgets  dodads
-----  -------  ------
id     id       id
ident  itemId   itemId
title  title    title
       type     type
       order    order
                default
所以现在我希望能够有继承权。这很简单,添加一个 将parentId添加到items表。现在的问题是小部件中的顺序列 还有多德的桌子

继承顺序应该适用于父项必须在tha中的情况 与父项的顺序相同,但子项的项目可以相互关联。就是 类似以下内容应该是可行的:

P1
P2
C1
C2
P3
P4
C3
所以问题是如何存储widget和dodad的总体顺序?我 假设我需要另一张桌子,但不确定最好的方式。是的
如果表结构可以处理多模块父级,那就好了。

顺序不是一个数据库概念,而是一个表示概念(如数据在屏幕或报表中的表示方式)。这听起来像是您在设计一个存储结构,它基于一种特定的方式来向用户显示数据,这通常是数据设计失败的标志。我真的不知道你到底在寻找什么,因为你的P1/P2/C1/C2示例没有显示任何小部件或Doodad,但我认为这就是你遇到的问题所在


半相关:如果widget和doodas之间的唯一区别是“default”列,为什么不将它们与另一个类型或类别列放在同一个表中?如果问题的一部分是在同一个列表中对widget和dooda进行排序,这将有所帮助。

顺序是一个显示问题,但需要存储该顺序。widget和dodad之间有更多的区别,但我只是为一个简单的例子做了一点小小的区别。P/C列表更多的是父或子窗口小部件或dodad有自己的顺序,但可以混合使用。这是一个混杂的顺序,我不知道如何保存;对于同一级别上的节点,类似于{1.1,1.2..}。顺便说一句,添加一个
ParentID
来创建树是一种“天真的方式”;搜索嵌套集、闭包表、路径枚举、分级层次结构。