Pregunta

Me pregunto cuál de ellos sería mejor utilizar en una aplicación web. Tengo una aplicación web que permite al usuario posterior al sitio. Hay tres tipos diferentes de mensajes, pero lo suficientemente similares que pudiera ponerlos debajo de una mesa. ¿Está bien que hacer?

Me podría normalizar las tablas de esta manera? (Poner tipo bajo cualquiera)

Tabla 1

UserPost
post_id 
user_id
type

Tabla 2

Post
post_id 
datetime
text

O sería el uso de una tabla ser mejor?

Tabla

Post
user_id
post_id 
datetime
type
text

Me estoy inclinando hacia la tercera vía, a menos que alguien puede señalar desventajas.

¿Fue útil?

Solución

En el primer enfoque, que siempre tendrá que crear una fila en ambas tablas para cada puesto de usuario. Así que no hay inconveniente por sólo tener una mesa, user_id continuación, debería ser una clave externa para la tabla de usuario, post_id la clave principal y las otras columnas contienen los datos. No hay ninguna razón para la creación de dos mesas.

Si los tres diferentes tipos de mensajes son descriptibles por un campo común, como un discriminador type está bien.

Otros consejos

Combinar las tablas, en realidad no hay ventaja para romperlos a cabo como si tuviera en la Tabla 1 y la Tabla 2. Ahora bien, si la tabla 1 tiene una llave separada de post_id, pudiera eliminar algo de redundancia. Ejemplo:

Table 1

UserPost
user_post_id 
user_id
type

Table 2

Post
post_id 
user_post_id 
datetime
text

Sobre la base de su último comentario de mi entendimiento es que post_id sería una clave candidata en los tres de sus tablas de ejemplo. Si esto es correcto, entonces le sugiero que crear una tabla para cada conjunto único de atributos (cada tipo de puesto). Así que si todos los mensajes tienen los mismos atributos en común, entonces tiene sentido tener a todos en una mesa, pero si hay dos o tres tipos continuación, dos o tres mesas sería más apropiado.

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