Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Formalización Tablas

Estas en el tema de Formalización Tablas en el foro de Bases de Datos General en Foros del Web. hola a todos en si esto es solo para ver si lo hize bien o no, estoy recien entrando al mundo de sqlserver y bueno ...
  #1 (permalink)  
Antiguo 15/12/2012, 07:47
Avatar de crczyn  
Fecha de Ingreso: marzo-2010
Mensajes: 16
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Formalización Tablas

hola a todos en si esto es solo para ver si lo hize bien o no, estoy recien entrando al mundo de sqlserver y bueno me tope con un ejercicio que no puedo quitarmelo de la cabeza, que es el siguiente, es sobre una pequeña relacion entre autor y libro

tabla libro
idlibro titlibro idautor(autores varias publicaciones) idautor(Autores 1 public)
------------------------------------------


y otra tabla de autor

idautor autor
-------------------


rompiendo dichas tablas y como lo hie fue la siguiente
tabla libro
-idlibro
-titlibro

tabla autor
-idautor
-autor

-taba aux
idlibro
-idautor

mi pregunta es si es que esta bien lo que hize o hay otro metodo para hacerlo, ya que vemos en primera tabla libros que se redunda los datos.

Gracias me ayudarian mucho :)
  #2 (permalink)  
Antiguo 15/12/2012, 08:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formalización Tablas

Voy a suponer que cuando hablas de "formalizar" y "romper" una tabla, estás hablando de Normalización de Bases de Datos...
Bien, no hay redundancia en la tabla libros.
En ese tipo de relaciones, la FK de los autores no van en la tabla libro sino en una tabla relacional que surge de la cardinalidad N:N (relacional y no "auxiliar", el concepto de auxiliar no existe en las BBDD).
Entonces a nivel lógico sólo existen dos entidades: Libro y Autor, pero a nivel físico, se necesitan tres:
1) Libros (idlibro, titulo, editorial, edicion, otros datos)
2) Autor(idautor, nombre, apellido, nacionalidad, otros datos)
3) Autor_Libro(idlibro, idautor).

La tercera tabla contendrá un registro por cada autor del mismo libro, y el par de claves serán una misma PK compuesta).
De ese modo no existe redundancia en ninguna parte, lo que es evidente si analizas los componentes del sistema como Entidades del modelo E-R.

¿Qué duda te plantea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/12/2012, 09:06
Avatar de crczyn  
Fecha de Ingreso: marzo-2010
Mensajes: 16
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formalización Tablas

gracias por responder mi interrogante, bueno solo aquella tabla llamada "tba aux" solamente era para facilitar escritura y un prueba Dev/null.
también el tema de "Normalización de Bases de Datos" que no lo sabía al completo y sus las formas de normalización. Bueno mi duda era si es que había error en la solución que hice, bueno al parecer esta bien.

Muchas gracias @gnzsoloyo por atender mi duda.
  #4 (permalink)  
Antiguo 15/12/2012, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formalización Tablas

La tabla relacional es obligatoria en toda relación muchos a muchos, como este caso, donde un autor puede serlo de muchos libros, y un mismo libro puede tener muchos autores.
En esos casos la única forma de manejarlo es con una tabla relacional.
De hecho, si usas una interfaz para diseño de bases de datos verás que cuando estableces una relación de ese tipo entre dos tablas, de forma completamente automática, te agrega una tabla nueva con las dos FK como PK de la tabla.
Es parte del modelo. no se puede obviar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/12/2012, 09:23
Avatar de crczyn  
Fecha de Ingreso: marzo-2010
Mensajes: 16
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formalización Tablas



entonces quiere decir al hacer esta relación, la cual se muestra en la imagen se puede hacer las siguientes consultas
- todos los libros de un autor
- autores que solo tiene una obra

no pido su resolución, unicamente si aquellas consultas pueden ser factibles en la relación que hice o es que aún tengo que seguir separando.
  #6 (permalink)  
Antiguo 15/12/2012, 09:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Formalización Tablas

AutLibro tiene que tener definida como PK una clave de dos campos que es (idLibro, idAutor).
Con sólo esas tablas puedes responder:

1) Que autores tiene un libro.
Es un INNER JOIN entre las tres tablas (Autor -> AutorLibro <- Libro).

2) Qué libros corresponden a un autor
Es un INNER JOIN entre las tres tablas (Libro -> AutorLibro <- Autor).

3) Autores que figuren sin libros registrados.
Se hace un LEFT JOIN entre Autor y AutorLibro, donde Autor devuelve NULL en AutorLibro.idLibro (Autor -> AutorLibro). La tercera tabla no es necesaria porque no devolvería nada en ese caso.

4) Qué libros están registrados sin autor.
Se hace un LEFT JOIN entre Libro y AutorLibro, donde Autor devuelve NULL en AutorLibro.idAutor (Libro -> AutorLibro). La tercera tabla no es necesaria porque no devolvería nada en ese caso.

..y todo el resto de las consultas posibles basadas en el resto de los atributos de cada una de las dos tablas base.

¿Se va entendiendo la idea?

El LEFT JOIN se escribe diferente de acuerdo a qué DBMS y que versión del mismo se use. Oracle 8i y Oracle 11g, tienen escritura distinta, y SQL Server tiene la suya propia (LEFT OUTER JOIN), mientras que MySQL lo hace de una forma más ANSI SL (LEFT JOIN).

Te recomiendo leer el manual de referencia del DBMS que uses antes de meterte a redactar las sentencias para asegurarte la sintaxis correcta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 15/12/2012, 09:51
Avatar de crczyn  
Fecha de Ingreso: marzo-2010
Mensajes: 16
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formalización Tablas

muchas gracias por tus respuestas, ya se puede poner el tema como solucionado, gracias por instruirme

Etiquetas: sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:26.