Mysql 数据库表设计,用于在存在项继承时处理排序项
我对数据库有以下要求。它需要能够 储存物品。项目具有id、标识符和标题。每个项目可以有零个 一个或多个小部件和零个或多个DoDAD。每个小部件和每个dodad都有一个 标题和类型。DoDAD也有一个默认值。还有 小部件和doda需要保存 我有以下表格来完成这项工作:Mysql 数据库表设计,用于在存在项继承时处理排序项,mysql,database-design,Mysql,Database Design,我对数据库有以下要求。它需要能够 储存物品。项目具有id、标识符和标题。每个项目可以有零个 一个或多个小部件和零个或多个DoDAD。每个小部件和每个dodad都有一个 标题和类型。DoDAD也有一个默认值。还有 小部件和doda需要保存 我有以下表格来完成这项工作: items widgets dodads ----- ------- ------ id id id ident itemId itemId title title title
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
来创建树是一种“天真的方式”;搜索嵌套集、闭包表、路径枚举、分级层次结构。