2012-08-28 15 views
6

Si una publicación tiene muchos comentarios y los comentarios son básicamente los mismos que las publicaciones (por ejemplo, tienen un título, imágenes y audio, etc.) ¿debo crear dos tablas o solo una?Diseño de base de datos para publicaciones y comentarios

Por ejemplo, si solo uso una tabla, puedo tener una columna parent_id, por lo que si no es una respuesta a algo sería nulo, de lo contrario, tendría el ID de la publicación principal. Por otro lado, puedo crear una tabla de publicaciones y una tabla de comentarios. Los comentarios también pueden responder a otros comentarios, por lo que podría ser confuso rápidamente.

*Post* 
    id 
    title 
    content 
    image 
    audio 
    parent_id 

o,

*Post*      *Comments* 
id        id 
title       title 
content      content 
image       author_id 
audio       post_id 
author_id      image 
           audio 

Lo que la segunda opción permitiría que es la creación de índices. De hecho, ni siquiera tendré que agregar author_id o post_id. Si uso índices desde el principio, ¿lo haré?

¿Qué piensas sobre este SO? ¿Cuál sería más eficiente? Estoy pensando en usar redbeanphp para esto.

Respuesta

2

La segunda opción sería mejor. Al mostrar un tablero de mensajes, no le importan los comentarios y buscarlos en una columna indexada de ID de padre es rápida. Las publicaciones y los comentarios probablemente tendrán diferentes campos, por lo que mantenerlos separados es correcto. El índice de id. Principal para la primera opción funcionaría bien, pero conceptualmente, es desordenado y básicamente estás creando un índice para usar en la mitad o en la cantidad de comentarios relacionados con las publicaciones.

0

Como regla en : Las tablas se denominan entidades, por lo que cada entity en su aplicación deben ser separados y demostraron por mesa. Aquí, aunque usted consideró publicaciones y comentarios, cada uno tiene el mismo tipo de datos, pero finalmente cada uno de ellos es una entidad separada, por lo que deben separarse en dos tablas. Este comportamiento no es una opinión personal. Es una regla básica que conduce a un desarrollo de aplicaciones más fluido.

Cuestiones relacionadas