Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 18-10-2010
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 24
erickperez6 Va por buen camino
Cita:
lbuelvas:

La ventaja es que las consultas pueden ser en la mayoria de las ocasiones mucho mas efcientes porque esos indices los utiliza el motor para elabora el plan que debe seguir para recuperar información de la base de datos.

Sin llaves foraneas se incrementa la complejidad del aplicativo porque tendrian que ponerse esos controles del lado del software que estes desarrollando para mantener la integridad de la información y además el aplicativo iria mas lento porque al verificar la existencia de un registro en una tabla con el valor que pretendes insertar en otra, la base de datos tendría que hacer un recorrido sobre toda la tabla hasta encontrar dicho valor, si esta tabla es de cientos de miles de registros sería catastrófico.
Estoy totalmente de acuerdo, opino que estas serian la razones mas importante de apoyarse siempre de todas las llaves foraneas necesarias al momento de diseñar nuestra base de datos.

Cita:
Delphius:

Me atrevería a apostar que pretender meter claves foráneas en todos lados es motivo de un mal diseño o de una mala comprensión de los conceptos de la teoría de base de datos... con todo respeto.
La verdad es que no me imagino como se pueden crear llaves foraneas que no se necesiten o que no cumpliran con ningun objetivo, pero veamos un caso hipotetico practico simple:

[transaccionesEncabezado]
EncabezadoId
EncabezadoFecha
clienteId
vendedorId
usuarioId
sucursalId

[transaccionesDetalle]
EncabezadoId
productoId
unidadId
productoCantidad
productoPrecio

Caso 1:
relacion foranea1: tablas transaccionesEncabezado y transaccionesDetalle con EncabezadoId (maestro / detalle de las transacciones)
... fin de las relaciones

Caso 2:
relacion foranea1: tablas transaccionesEncabezado y transaccionesDetalle con EncabezadoId (maestro / detalle de las transacciones)
relacion foranea2: tablas transaccionesEncabezado y clientes con clienteId
relacion foranea3: tablas transaccionesEncabezado y vendedores con vendedorId
relacion foranea4: tablas transaccionesEncabezado y usuarios con usuarioId
relacion foranea5: tablas transaccionesEncabezado y sucursales con sucursalId
relacion foranea6: tablas transaccionesDetalle y productos con productoId
relacion foranea7: tablas transaccionesDetalle y unidades con unidadId
... fin de las relaciones

Aunque sean mas, la verdad es que siento que puedo dormir mas tranquilo con el segundo caso

Con lo que me referia al tema inicial es por qué dejar intencionalmente una relacion como el caso 1? ¿a cambio de que sacrificar la integridad de la informacion?... sera mejor performance de la db? velocidad? menos corrupcion? otras tecnicas de mantener la integridad? algo que desconozco? o simplemente es un mal diseño de la base de datos y me estoy complicando mas de la cuenta... todo viene por lo que señale al principio del post:

Cita:
Me surgio la duda cuando estaba observando dias atras el diseño de una base de datos (obviamente en firebird) de un producto muy terminado y con muchos años en el mercando y observe que utiliza muy poco las llaves foraneas, solo en caso excepcionales como en tablas de maestro / detalle de transacciones (Caso 1), despues nada de llaves foraneas.

Última edición por erickperez6 fecha: 18-10-2010 a las 22:28:18.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con llaves foraneas jcrg666 MySQL 1 01-04-2010 00:41:36
Maneja llaves foraneas , problemitas! richardxxx Varios 1 07-11-2008 22:42:03
LLaves foraneas... Luis Castillo SQL 2 13-11-2005 18:45:34
Llaves Foraneas RainFall MySQL 1 26-07-2004 04:19:28
Llaves foraneas en BDD distintas StartKill Firebird e Interbase 7 31-01-2004 01:14:01


La franja horaria es GMT +2. Ahora son las 03:06:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi