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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.460
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por erickperez6 Ver Mensaje
Me gustaria saber si tener una base de datos fuertemente diseñada con llaves foraneas puede incidir con el decrecimiento del performance de la db?
Sí.

Cita:
Empezado por erickperez6 Ver Mensaje
Estoy claro que una base de datos ampliamente relacionada con llaves foraneas decrece la velocidad en los insert, update, delete por lo constantes chequeos/cambios que tiene que hacer antes de aplicar los cambios
La lógica es correcta.
Otro problema (y gordo) es lo que eso implica.

Es algo así como decir: "Si a un coche le quitamos los frenos, las luces, los asientos, los cinturones,... ¿Correrá más?"

RESPUESTA: Sí. Pesa menos, por lo tanto correrá más. El problema vendrá cuando tengas que parar/frenar...

Si quitas TODAS las foráneas de una Base de datos habrá algunas operaciones que irán más rápido, cierto; El problema son las prestaciones que estás perdiendo a cambios.

Si hablamos de "casos especiales" y por lo tanto no generalizamos, puede ser conveniente "desactivar claves foráneas" para ganar velocidad, como puede ser un proceso de carga masiva o de copia de datos; Pero simplemente porque se asumen unas condiciones (los datos son correctos y vienen de una fuente donde sí están relacionados con claves) que so se pueden asumir en otros casos y deben tratarse como especiales. De ahí, que muchas bases de Datos (como alguien ha comentado) tengan la opción de desactivar estas comprobaciones de forma momentánea (desactivar, no eliminar).

He visto Base de Datos sin foráneas, donde había comprobaciones mediante triggers y algunas otras donde se hacían por programa (delphi); Al final, el tiempo de comprobación hay que "perderlo" igual, sea en el Trigger o en el código Delphi.
Salvo que haya una razón para no hacerlo mediante una clave foránea, no veo razón para programar una cosa que ya está hecha.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 19-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 948
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
Es algo así como decir: "Si a un coche le quitamos los frenos, las luces, los asientos, los cinturones,... ¿Correrá más?"

RESPUESTA: Sí. Pesa menos, por lo tanto correrá más. El problema vendrá cuando tengas que parar/frenar...
!!!QUE EJEMPLO!!!

Con esto no posteo mas...

Saludos
Responder Con Cita
  #3  
Antiguo 19-10-2010
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 24
erickperez6 Va por buen camino
Cita:
lbuelvas

Para erickperez6, puedo garantizar que el sistema que mencionas que usa pocas llaves foraneas no es para bases de datos de gran tamaño y si lo fuera el rendimiento no sería el ideal, algunos fabricantes de software exigen al cliente para solventar los problemas de rendimiento el utilizar equipos más rápidos.

Otro asunto es que cuando haces un sistema que lo tienen muchos clientes es más fácil mantener los problemas de diseño que corregir e ir a actualizar aplicativos a esa cantidad de clientes.
Estoy deacuerdo, quizas ellos tendran sus razones para hacer esto

Cita:
Casimiro Notevi

Estamos hablando, supongo, de "casos normales", y lo normal es usar una clave foránea, pongamos un simple ejemplo:
tabla personas (idPersona, nombre, domicilio, pais, sueldo);
tabla paises (idPais, nombre);
Lo normal es que exista una relación entre idPais (tabla paises) y pais (tabla personas).
Nos evitamos asignar una persona a un país inexistente, nos evitamos borrar un país que tiene asignado alguna persona, etc. eso es lo normal, ¿o acaso estamos hablando de otra cosa y no me he enterado?
Exactamente de este tema hablamos

Cita:
Delphius

Pues yo dormiría más cómodo y tranquilo con el primer caso. Hay menos lío y quizá sea un diseño más estable. Cuanto mayor sea la cantidad de claves foráneas, más complicado es el diseño general de la base de datos y existe una creciente peligrosidad de la presencia de ciclos en las relaciones.

Con cada clave foránea que se añade la probabilidad de que exista un ciclo aumenta... y déjame decirte que en términos estadísticos por cada 2 claves foráneas en una tabla pueden llegar a esperarse 1 ciclo. Para tu ejemplo, es posible esperar cerca de 4 potenciales ciclos entre esas dos tablas y otras restantes.
Si, tienes razon en que a mayor llaves foraneas mas complicado es el diseño en general, obviamente. Tambien conozco lo que son los conflictos de dependencia que pueden desencadenar algunas llaves foraneas por causa de un mal diseño, pero no entiendo bien a que te refieres con los ciclos, hablamos de lo mismo?

En fin, en el ejemplillo expuesto sin extrapolarme a situaciones mas complejas, yo me quedaria con el caso2, creo que no seria prudente dejar huerfanos algunas asociaciones que se pudiera realizar por medio de las llaves foraneas, es como dice Casimiro, asi nos evitamos de asociar codigos que no existen o que algun usuario comience a cambiar o eliminar codigos de clientes, productos, sucursales, vendedores que estan representados en estas dos tablas.
Responder Con Cita
Respuesta


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 13:32:51.


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