diseño de base de datos para un montar a caballo con un número variable de candidatos

votos
0

Por lo tanto, tengo una mesa de montar a caballo, y una tabla de candidatos. Cada montar puede tener hasta 12 candidatos que se presentan en ella, y cada candidato tiene su propio resultado individual. Además tengo una tabla de división de votación, que es similar a la mesa de montar, excepto que varios cientos de divisiones por lo general comparten el mismo conjunto de candidatos.

Estoy teniendo problemas para hacer un diseño de base de datos fuera de este. Actualmente, tengo 2 columnas por candidato, uno de los cuales almacena un identificador en la tabla de candidatos, y el otro el resultado. La tabla de montar a caballo se ve así:

(riding_id INTEGER, name TEXT, cand0_id INTEGER, cand0_result INTEGER ... cand11_id INTEGER, cand11_result INTEGER)

La tabla de la división de votación es similar.

La tabla de candidatos es el siguiente:

(cand_id INTEGER, riding_id INTEGER, name TEXT)

Si un caballo o encuesta tiene menos de 12 candidatos a continuación, ese conjunto de columnas está vacío. Sin embargo, esto es difícil de manejar para trabajar con, ya que requiere consultas masivas para conseguir cada columna que necesito y un gigante en la mesa uno a los candidatos.

Si tuviera sólo las circunscripciones, tan sólo pudiera utilizar el ID de montar en la tabla de candidatos para la relación, pero también hay varios cientos de divisiones de votación un candidato también se asocia con, lo que significa que me encuentro con la tonelada de columnas problema de nuevo si quiero hacer lo mismo con las divisiones de votación.

¿Hay una manera sana para diseñar mis datos?

Publicado el 27/11/2018 a las 16:52
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Que debe de mantener un diseño categórica, y evitar el deseo de tener un diseño que tiene 'a través de' columnas. Su diseño debe incluir puntos de vista que pivotan los datos en otras formas de disposición necesarios a efectos de información.

Sobre la base de su pregunta y la especulación de la gestión de votación

candidates
----------
candidate_id
name
affiliation_id
etc...

ridings
-------
riding_id
name
etc...

riding_candidates
-----------------
riding_candidate_id
riding_id
candidiate_id
result

polling_divisions
-----------------
polling_division_id
name
etc...

polling_division_candidates
---------------------------
polling_division_candidate_id
polling_division_id
candidate_id
detail... (specific to division+candidate combination)
etc...
Respondida el 27/11/2018 a las 17:32
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more