PDA

Ver la Versión Completa : Dos opinionenes de Base de datos


jordan23
03-08-2007, 18:46:31
1) Que opinan de una base de datos de la cual sus tablas no maneje llaves foraneas es decir que no haya relaciones??? que ventajas o desventajas podría tener??

2) Y un tema que ya me ha tocado debatir las Las llaves primarias de una tabla deben hacer referencia a un campo o grupo de campos??? por ejemplo CodigoArticulo o las llaves debe primarias solo debe ser un campo??? por ejemplo incremental??? IdArticulo

Agradeceré sus repuestas.:)

jhonny
03-08-2007, 19:00:34
Mi opinion:

1) Una BD sin llaves foraneas, corre el riesgo de que tenga datos inconsistentes, como ejemplo:

Tengo una tabla de clientes y otra de movimiento de cliente, pero el dia de mañana le hicieron una factura al cliente 55555 que no existe. Me quedaria un moviemiento en la tabla MovClientes de un cliente inexistente, lo cual es una inconsistencia.

2) Eso depende de tu necesidad, en algunas tablas vas a necesitar un grupo de campos para definir la llave primaria, pero en otros casos solo necesitaras un campo para definirla.

roman
03-08-2007, 20:44:39
1) Una base así no vale dos cacahuates.

2) Yo prefiero usar llaves que no involucren ningún dato significativo. Hay llaves naturales, como el SSN de los gringos, el RFC mexicano o los RUTs, que podrían usarse como llaves primarias por el mero hecho de ser únicas. Pero cualquier error en la captura, dará dolores de cabeza para corregirlo, porque estará en todas las tablas que tengan ese campo como llave foránea. Luego entonces, prefiero usar llaves artificiales, y para ello basta un sólo campo, p. ej. un autoincremental.

// Saludos

mamcx
03-08-2007, 21:29:18
Concuerdo con roman. Usar siempre AutoIncs para las llaves... ademas se elimina la necesidad de hacer un UPDATE en cascada si se llega a cambiar (que pasa).

Un semi-desventaja es no tener el dato "a la mano" en las tablas hijas, como en el caso de un detalle de factura, pero para eso son las vistas!

roman
03-08-2007, 21:45:56
Un semi-desventaja es no tener el dato "a la mano" en las tablas hijas, como en el caso de un detalle de factura, pero para eso son las vistas!

Eso sí; termina uno teniendo tablas con muchos números que no nos dicen nada y puede ser bastante impráctico para revisar datos a pie, fuera del sistema. Los joins están a la orden. En algunos casos, además de las llaves artificiales, dejo los campos que en otras circunstancias habrían sido llaves foráneas, para evitar tanto join, pero sólo como referencia.

// Saludos

jordan23
03-08-2007, 22:16:22
Muy interesantes sus respuestas las cuales agradezco mucho.:)

AzidRain
04-08-2007, 00:55:24
Yo coincido con Roman, siempre uso claves artificiales excepto cuando hay algun campo candidato a clave única que no tenga forma de introducir errores de captura, por ejemplo: un número de factura.

Te comento que además los incrementales tienen la gran ventaja de que (al menos en MySQL y tablas MyISAM) puedes usar varios a la vez y el motor se encarga de ir creando categorias. Por ejemplo para un pedido y sus lineas, defino el pedido con una clave autoinc para la primaria y la tabla de lineas le pongo un campo "normal" que contiene la clave externa y un campo autoinc ambos como clave primaria de manera que MySQL en automático me va generando numeros de línea independientes para cada pedido.

delphi.com.ar
04-08-2007, 02:31:09
1) Que opinan de una base de datos de la cual sus tablas no maneje llaves foraneas es decir que no haya relaciones??? que ventajas o desventajas podría tener??
¿Que opinarías si Ford produce un automóvil nuevo solo con la tecnología de su modelo T?.... No solo se trata de evitar problemas de integridad, sino que también las cláves foráneas facilitan la comprensión del modelo de datos, asisten al optimizador al realizar consultas....


2) Y un tema que ya me ha tocado debatir las Las llaves primarias de una tabla deben hacer referencia a un campo o grupo de campos??? por ejemplo CodigoArticulo o las llaves debe primarias solo debe ser un campo??? por ejemplo incremental??? IdArticulo
El segundo punto coincido totalmente con lo expuesto por Román, y agrego que de ser necesario crees claves únicas para los campos que sepas no se repetirán.

Neftali [Germán.Estévez]
16-08-2007, 12:58:23
(1)...ventajas o desventajas podría tener??

(2)...Las llaves primarias de una tabla deben hacer referencia a un campo o grupo de campos???

(1) Ventajas, no le veo ninguna, como desventaja basta nombrar "La inconsistencia de Datos"; Para cualquiera que se preocupe un poco por los datos esa sólo frase debería ser suficiente.
(2) En algun sitio he leído que las claves autoincrementales son más eficientes (apostaría que es más, por ser numérico que por compuesta), y tiene sentido, pero realmente creo que estamos hablando de porcentajes de eficiencia muy bajos.
Yo suelo usar ID y luego lo que sería la clave compuesto con un indice único.