包含两种不同关系的数据模型



我正试图找出我应该使用哪种类型的数据模型,以及这个数据模型应该是什么样子。该模型需要存储在关系数据库(SQL)中。使用的语言是:PHP。

我有几种项目:项目、任务和评论。在我的最终申请中,将有许多类型的项目。

每个项目(任何类型)都需要能够属于另一个项目(任何种类),每个项目(任意类型)都必须能够成为另一项目(任意种类)的后续项目。所以我需要两种不同的关系:继承性和时间性;两者都是定向的。无论什么样的关系项目都可能不会回环到自己身上。非法:项目A->项目B->项目C->项目A

我希望能够提取以下类型的信息:

  • 显示导致此项目的项目链。(时间关系)输出:列表
  • 显示属于此项目的所有项目。(继承关系)输出:树
  • 显示此项目如何指向该项目(忽略其他项目中的项目)。(时间和继承关系)输出:

我不知道我会如何想象最后一个。

用户需要能够:

  • 添加/删除项目(任何类型)
  • 建立/打破(任何类型的)关系
  • 更改关系或项目类型

我不明白这怎么会成为关系概念设计的问题。您总是可以通过解析输出(来自查询)来获得所需表单中的信息。例如

模式:

project(pid,...),
milestone(pid,mid),
tasks(tid,mid,..),
reviews(rid,tid,..),
events(evid,rid), ... 

从一个项目中,您可以获取导致评审的所有事件,甚至与项目相关的所有事件(通过联接),然后对它们进行解析,以按照您喜欢的任何信息格式进行排列和显示。

用户总是可以添加&删除项目。以你的例子来说,我还不明白"更改关系或项目类型"是什么意思!

Item(iid,itemstuff,typeid,iid)
type(typeid,description)

使用itemstuff,您可以添加可序列化的数据,或者您可能喜欢的常见数据。然后,如果你愿意,专门化:

Item1(iid,i1....)
item2(iid,i2....)
.

但是,改变就意味着更新。

对于类似的问题,我不得不这样做过一次,但当时我并没有为环回而烦恼。我很怀疑你能在rdbms中得到这样一个动态模型。

最新更新