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

时间:2012-11-18 10:31:27

标签: data-modeling relationship

我正在试图找出我应该使用哪种数据模型以及该数据模型应该如何。该模型需要存储在关系数据库(SQL)中。使用的语言:PHP。

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

每个项目(任何类型)都需要能够属于另一个项目(任何类型),并且每个项目(任何类型)都需要能够成为另一个项目(任何类型)的后续行动。所以我需要两种不同的关系:遗产和时间顺序;都是针对性的。无论什么样的关系项目都可能无法回归自己。非法:项目A - >项目B - >项目C - >项目A。

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

  • 显示导致此项目的项链。 (年代关系)输出:列表
  • 显示属于此项目的所有项目。 (继承关系)输出:树
  • 告诉我这个项目如何导致该项目(忽略其他项目中的项目)。 (按时间顺序和继承关系)输出:??

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

用户需要能够:

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

2 个答案:

答案 0 :(得分:0)

我不明白通过关系概念设计这可能是一个什么问题。 您始终可以通过解析输出(来自查询)来获取您正在寻找的表单中的信息。 e.g。

使用架构:

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

从项目中,您可以获得导致审核的所有事件,甚至是与项目相关的所有事件(通过联接),然后通过它们进行解析,以您喜欢的任何信息格式进行排列和显示。 / p>

用户可以随时添加&删除项目。举个例子,我还不知道“改变关系或项目类型”意味着什么!

答案 1 :(得分:0)

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

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

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

但是,改变意味着更新。

对于类似的问题,我不得不这样做一次,但是我没有回想起关于环回的问题。 我非常怀疑你能在rdbms中获得这样一个动态模型。