如何将数组/对象插入SQL(最佳实践)

如何将数组/对象插入SQL(最佳实践),sql,arrays,sqldatatypes,Sql,Arrays,Sqldatatypes,我需要将三个项目作为一个数组存储在一列中,并且能够在以后的函数中快速/轻松地修改这些数据 [---如果你相信我,你可以跳过这部分--] 说清楚一点,我喜欢并一直使用x_ref表,但是x_ref在这里不起作用,因为这不是一对多关系。我正在制作一个项目管理工具,其中包括为一个项目分配一个用户,并每周为该项目分配每个用户的时间,有时在未来数周内。当然有很多项目,一个项目可以有很多团队成员,一个团队成员可以同时参与很多项目,但不是一对多,因为一个团队成员可以在同一个项目上工作很多周,但在不同的周有不同的

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

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

说清楚一点,我喜欢并一直使用x_ref表,但是x_ref在这里不起作用,因为这不是一对多关系。我正在制作一个项目管理工具,其中包括为一个项目分配一个用户,并每周为该项目分配每个用户的时间,有时在未来数周内。当然有很多项目,一个项目可以有很多团队成员,一个团队成员可以同时参与很多项目,但不是一对多,因为一个团队成员可以在同一个项目上工作很多周,但在不同的周有不同的时间。换句话说,每个对象都是唯一的。此外/最后,任何团队成员都可以随时更改此数据,因此需要易于操作

基本上,我需要处理三个值(团队成员、我们谈论的周数和小时数)放到项目表中的项目行中(在项目团队成员列下),并作为一个项目(团队成员)处理,这实际上是项目中涉及的所有团队成员的更大数组的一部分

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

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


目前,我正在考虑(webservice+JS/JSON)或PHP非序列化/序列化(但我对PHP解决方案略知一二,因为它在使用ajax时似乎有点麻烦?)

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

我承认这种方法可能有问题。例如,如果要在本栏中搜索“Joe”,则必须使用
…如“Joe%”
。似乎不太可索引,因此您的查询将有点慢


有些数据库(如Oracle)实际上允许将数组类型作为列类型(我认为这些类型有时也称为嵌套表),我认为(可能是错误的)可以搜索列中数组的元素并为其编制索引。您没有指定与哪个数据库供应商合作,因此您可能可以将其作为一个合适的数组,这取决于您选择的技术。

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

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>
选择*form workItemTracking,其中userId=和介于和之间的周

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

看在其他人的份上


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

该死的拜伦,你抓到我了;我讨厌在互联网上看起来很傻哈哈。但你是对的——这确实是更好的解决方案。谢谢哈哈,没问题。考虑回答一些问题。干杯