Pregunta

necesito para almacenar tres elementos como una matriz de una sola columna y poder rápidamente / modificar fácilmente que los datos en las funciones posteriores.

[--- Usted puede saltar esta parte si confías en mí -]

Para que quede claro, me encanta y el uso x_ref mesas todo el tiempo pero una x_ref no funciona aquí porque esto no es una relación de uno a muchos. Estoy haciendo una herramienta de gestión de proyectos que, entre otras cosas, asigna un usuario a un proyecto y asigna horas a ese proyecto una vez por semana, por usuario, a veces durante semanas muchas semanas en el futuro. Por supuesto que hay muchos proyectos, un proyecto puede tener muchos miembros del equipo, un miembro del equipo puede estar involucrado con muchos proyectos a la vez, pero no es uno-a-muchos debido a que un miembro del equipo puede estar trabajando muchas semanas en el mismo proyecto, sino que tenga diferentes horas para diferentes semanas. En otras palabras, cada objeto es realmente único. También / Finalmente, estos datos se puede cambiar en cualquier momento por cualquier miembro del equipo - por lo tanto, tiene que ser fácil de manipular.

Básicamente, tengo que manejar tres valores (los miembros del equipo, la semana que estamos hablando, y el número de horas) se dejó caer en una fila en la tabla de proyectos proyectos (bajo la columna para los miembros del equipo de proyecto) y tratados como un elemento - un miembro del equipo -. que realmente va a ser parte de un conjunto más amplio de todos los miembros del equipo que participan en el proyecto

[- FIN SKIP, empezar a leer aquí :) -]

Así que asumiendo que de esquema y relación tablas generales de la aplicación no son basura total y que de hecho estamos en contra de una pared en éste caso al utilizar una matriz / objeto como un valor para esta columna, es que hay una mejor práctica ¿para eso? SQL como un tipo de datos en particular? Un formato determinado objeto / matriz? CSV? JSON? XML? La mayor parte de la aplicación es en C #, pero (por razones muy extrañas que no voy a explicar) que realmente podría usar cualquier ambiente si hay una en particular que los mangos de este pozo.

Por el momento, estoy pensando bien (servicio web + JS / JSON) o PHP unserialize / serializar (pero soy poco esbozado por la solución PHP, ya que parece un poco engorroso cuando se usa ajax?) Pensamientos alguien?

¿Fue útil?

Solución

Hmm suena como usted debe reconsiderar su esquema, Si he entendido por qué no acaba de crear uno como este:

Users
  ...
Projects
  ...

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

Para saber lo que el usuario está haciendo por los próximos 3 semanas,

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

Esto le dará la capacidad de asignar múltiples usuarios a múltiples proyectos, y proyectos para múltiples usuarios. También hace que la actualización fácil. ¿Tiene esto sentido?

Otros consejos

Podría aplanar la matriz en una columna de texto y utilizar algunas ficha especial para separar cada pieza de datos, por ejemplo, la cadena de Joe/03/25 sería un someArray={'Joe','03','25'} matriz. Funcionaría eso?

Me admitir que podría haber problemas con este enfoque. Por ejemplo, si desea buscar en esta columna para "Joe" que tendría que utilizar ...LIKE 'Joe%'. No parece muy indexable, por lo que sus consultas serán un poco más lento.

Algunas bases de datos como Oracle, permiten de hecho los tipos de matriz como los tipos de columnas (creo que estos también son a veces llamadas tablas anidadas), y pensar (podría ser, aunque mal) que se puede buscar e indexar el elementos de una matriz en una columna. No se especificó qué proveedor de base de datos con la que estaba trabajando, por lo que es posible que usted puede ser capaz de obtener esto como un adecuada array, dependiendo de la tecnología de su elección.

Por el bien de cualquier otra persona preguntando ...

"Damnit Byron me tienes; me gusta parecer estúpido en el interweb jaja pero tienes razón - que realmente es la mejor solución gracias..!"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top