Bases de Datos - Diseño de base de datos

 
Vista:
sin imagen de perfil
Val: 8
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por coolerfun (4 intervenciones) el 18/09/2018 21:56:48
Hola, tengo una duda sobre como plantear el diseño de las tablas y relaciones de una bd. Les planteo el escenario para ver cual seria la solución mas adecuada.

Tenemos un tabla que le vamos a llamar "principal", esta tabla debería tener la posibilidad de tener varios campos personalizados, que puedan registrar información adicional, y otros que serán comunes a cada registro. La cuestión es que con el tiempo pueden ser necesario campos personalizados de forma adicional.

Una solución quizá poco ortodoxa seria crear campos en la tabla a medida que sen necesarios.

Una segunda solución es crear tablas relacionadas con la tabla principal y cada una de ellas tendría x campos personalizados. En este caso seria necesario ir creando nuevas tablas a medida que sean necesarias.

Una tercera opción es crear en la tabla principal x campos genéricos, que luego serian parametrizados desde otra tabla (nombre campo, tipo registro ...).

¿Cual sería la mejor solución?, teniendo en cuenta que lo importante es mantener la integridad referencial.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 93
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por xve (107 intervenciones) el 19/09/2018 08:55:27
Hola, según entiendo, en las 3 soluciones que presentas, hay que ir modificando la estructura de las tablas o crear nuevas tablas, verdad?

No se que tipo de datos vas a guardar, ni como puede crecer, pero la que mas me convence es la de crear tablas relacionadas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 8
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por coolerfun (4 intervenciones) el 19/09/2018 09:34:27
Bueno en la 3 opción no seria necesario.
Gracias por la respuesta, voy a tratar de poner en contexto para que se entienda mejor. Imagina que tenemos una tabla para guardar datos de libros, tendremos algunos campos comunes (nombre, editorial, año, ....), pero sera necesario utilizar en determinadas circunstancias campos personalizados, de modo que se utilizan en unos registros y en otros no, incluso varios registros deberían de poder tener campos personalizados diferentes.

Imaginemos que en base a la clasificación (terror, novela, comedia ...) puede haber unos campos personalizados diferentes, pero lo particular es que puedan aparecer tipos de clasificaciones nuevos con el tiempo.

La primera opción la descarto por que podríamos tener una tabla con un número de campos difícilmente manejables.

La segunda opción resulta interesante por que seria tener una tabla relacionada por cada clasificación, pero me preocupa el hecho de tener que crear en producción nuevas tablas, no se si esto es una buena practica.

La tercera plantea que tendríamos por defecto unos campos genéricos en la tabla libros, que serian definidos desde otra tabla en función de la clasificación.

De modo que tendríamos una tabla libros (campos comunes + campotexto1, campotexto2, .... campoentero1, campoentero2... campobool1, campobool2...)
En otro tabla se definen estos campos en función de la clasificación, por ejemplo (clasificacion, campotexto1, nombrecampo).

Bueno estas es una visión general, y estas son las opciones que veo, pero me gustaría saber si hay otro modo de hacerlo o cual es la opción mas recomendable, de cara a la integridad escalabilidad y rendimiento.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 434
Oro
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por Leonardo Daniel A. (211 intervenciones) el 20/09/2018 01:47:52
Hola si tu requerimiento es ese.... investiga sobre MongoDB con esa b.d. puedes solucionar ese tipo de cosas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por coolerfun (4 intervenciones) el 22/09/2018 16:48:39
Gracias Leonardo, es algo en lo que no había pensado. Tendré que analizarlo, tengo entendido que se pierde la capacidad relacional, que es algo que me conviene.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de sandro makaviel
Val: 119
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por sandro makaviel (79 intervenciones) el 23/09/2018 18:39:01
Has tablas relacionadas por ejemplo:

tabla 1 tipo de libro
1
2
3
4
1 comedia
2 terror
3 drama
etc

tabla 2 titulos
1
la esposa infiel autor editorial(1) tipo de libro (3)

otra relacion tabla tipos de editorial
1
2
3
1 trillas
2 mundo
etc

esa es mi idea, relacionas con llave foránea tipo de libro y editorial, no puedas dar un registro de alta de un titulo sin que exista su correspondiente tipo de libro o editorial. Si lo que quieres es ahorrar espacio esa la forma.

puedes generar la relaciones que gustes, ahorita se me ocurre también autor para no errar en los nombre etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por coolerfun (4 intervenciones) el 23/09/2018 22:29:42
Hola Sandro, antes de nada agradecerte tu respuesta.

El planteamiento que tengo que resolver creo que va mas por otro lado, si que tengo previsto utilizar calves foráneas y diferentes relaciones en este y otros ambitos.

Necesito registrar datos que supongamos son libros, el registro tendrá algunos campos comunes como (nombre, autor, isbn....) con o sin claves foráneas eso es otra cuestión. Sin embargo dependiendo por ejemplo de la clasifiación del libro (comedia, terror,...) tendremos la necesidad de utilizar campos adicionales diferentes.

Hasta aquí todo bien, pero ahora imagina que pueden aparecer distintos tipos de clasificación en un futuro, esto es lo que representa complejidad. Como ya dijo Leonardo esto se puede resolver con nosql, algo que ni me había planteado y que por otras necesidades del proyecto dudo mucho que pueda llevar a cabo.

Estoy buscando cual es la mejor forma de resolver esto con bases de datos relacionales, concretamente mariadb. Una opción es crear campos comodín que se definen desde otra tabla en función de la clasificación. La otra opción es crear tablas nuevas cada vez que se crea una nueva clasificación, que tendría los campos necesarios, naturalmente se relacionaran adecuadamente para que todo funcione.

MI duda es mas conceptual nose cuanto de adecuado u ortodoxa es una u otra solución.

Por cierto he tomado libros como ejemplo, pero no serán libros lo que necesito organizar.

Gracias una vez mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de sandro makaviel
Val: 119
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Diseño de base de datos

Publicado por sandro makaviel (79 intervenciones) el 24/09/2018 22:53:22
yo creo que tu mismo estas viendo un hilo blanco y el carrete es negro

ponlo en ejemplo de lo que quieres lograr, no se cajas, registros, por que me late nadie te entiende
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar