1

我需要将三个项目作为一个数组存储在一个列中,并且能够在以后的函数中快速/轻松地修改该数据。

[---如果你相信我,你可以跳过这部分——]

需要明确的是,我一直喜欢并使用 x_ref 表,但是 x_ref 在这里不起作用,因为这不是一对多的关系。我正在制作一个项目管理工具,除其他外,将一个用户分配给一个项目,并每周为每个用户分配小时数,有时甚至是未来数周内的数周。当然有很多项目,一个项目可以有很多团队成员,一个团队成员可以同时参与多个项目,但它不是一对多的,因为一个团队成员可以在同一个项目上工作数周但有不同周的不同时间。换句话说,每个对象确实是独一无二的。此外/最后,任何团队成员都可以随时更改此数据 - 因此它需要易于操作。

基本上,我需要处理三个值(团队成员,我们谈论的星期,以及多少小时)放入项目表中的项目行(在项目团队成员列下)并作为一项处理 -一个团队成员 - 实际上将是参与该项目的所有团队成员的更大数组的一部分。

[--结束跳过,从这里开始阅读:)--]

因此,假设应用程序的通用模式和关系表不是完全废话,并且在这种情况下我们实际上是碰壁使用数组/对象作为该列的值,是否有最佳实践?喜欢特定的 SQL 数据类型?特定的对象/数组格式?CSV?JSON?XML?大多数应用程序都是用 C# 编写的,但是(出于非常奇怪的原因,我不会解释)如果有一个可以很好地处理这个问题的特定环境,我们真的可以使用任何环境。

目前,我正在考虑(webservice + JS/JSON)或 PHP 反序列化/序列化(但我对 PHP 解决方案有点草拟,因为使用 ajax 时似乎有点麻烦?)有人想过吗?

4

3 回答 3

3

嗯,听起来你应该重新考虑你的架构,如果我理解你为什么不创建一个这样的:

Users
  ...
Projects
  ...

WorkItemTracking 
  UserId
  ProjectId
  Week // between 1 and 52, or a datestamp
  Hours // number of hours budgeted for this task this week

要了解用户在接下来的 3 周内正在做什么,

SELECT * form workItemTracking where userId = <id> and week between <weekstart> and <weekend>

这将使您能够将多个用户分配给多个项目,并将项目分配给多个用户。它还使更新变得容易。这有意义吗?

于 2010-03-23T21:27:19.040 回答
0

您能否将数组展平为文本列并使用一些特殊标记来分隔每条数据,例如字符串Joe/03/25将是一个数组someArray={'Joe','03','25'}。那行得通吗?

我承认这种方法可能存在问题。例如,如果您想在此列中搜索“Joe”,则必须使用...LIKE 'Joe%'. 似乎不是很可索引,因此您的查询会有点慢。

某些数据库(例如 Oracle)实际上允许数组类型作为列类型(我认为这些有时也称为嵌套表),并且我认为(尽管可能是错误的)您可以在列中搜索和索引数组的元素。您没有指定您正在与哪个数据库供应商合作,因此您可能能够将其作为适当的阵列来获取,具体取决于您选择的技术。

于 2010-03-23T21:26:56.637 回答
0

为了让其他人想知道...

“该死的拜伦,你抓住了我;我讨厌在互联网上看起来很愚蠢哈哈。但你是对的——这确实是更好的解决方案。谢谢!”

于 2010-03-23T21:34:45.967 回答