Discusion: Relaciones en SQL Server
Publicado por dcerda (2 intervenciones) el 21/07/2004 00:31:43
Estimados, quiero iniciar una discusión acerca de Integridad de Datos y Relaciones en SQL Server 2000.
Un experimentado amigo y yo hemos discutido desde hace unos días acreca de este tema y hemos decidido acudir a este foro para obtener opiniones externas.
Se trata de lo siguiente:
Supongamos que en SQL Server 2000 tú tienes 2 tablas relacionadas, por ejemplo, Ventas y Clientes.
La relación la haces por el Codigo de Cliente de ambas tablas. Para exigir Integridad Referencial, exiges 'Relación para duplicación' y 'Exigir Relación para INSERT y UPDATE'. Hasta ahora todo bien. Continúo.
La regla de negocio indica que puedes realizar ventas sin necesidad de establecer el Cliente al que se estás vendiendo, lo que indica que nuestra relación debe permitir, o dejar el campo Nulo, o crear un cliente 0=Ninguno en Clientes y seleccionar éste cada vez que se realice una venta sin cliente.
Para mí, lo óptimo es establecer que el campo Codigo_Cliente en la tabla Ventas acepte nulos, guardandolo NULL cada vez que se realice una venta sin cliente, y manteniendo, claro, la relación para las validaciones correspondientes. Para mi amigo, en cambio, esto NO es Integridad referencial ni Integridad de Datos, y prefiere crear el cliente 0=Ninguno.
Espero sus comentarios. Gracias.
Un experimentado amigo y yo hemos discutido desde hace unos días acreca de este tema y hemos decidido acudir a este foro para obtener opiniones externas.
Se trata de lo siguiente:
Supongamos que en SQL Server 2000 tú tienes 2 tablas relacionadas, por ejemplo, Ventas y Clientes.
La relación la haces por el Codigo de Cliente de ambas tablas. Para exigir Integridad Referencial, exiges 'Relación para duplicación' y 'Exigir Relación para INSERT y UPDATE'. Hasta ahora todo bien. Continúo.
La regla de negocio indica que puedes realizar ventas sin necesidad de establecer el Cliente al que se estás vendiendo, lo que indica que nuestra relación debe permitir, o dejar el campo Nulo, o crear un cliente 0=Ninguno en Clientes y seleccionar éste cada vez que se realice una venta sin cliente.
Para mí, lo óptimo es establecer que el campo Codigo_Cliente en la tabla Ventas acepte nulos, guardandolo NULL cada vez que se realice una venta sin cliente, y manteniendo, claro, la relación para las validaciones correspondientes. Para mi amigo, en cambio, esto NO es Integridad referencial ni Integridad de Datos, y prefiere crear el cliente 0=Ninguno.
Espero sus comentarios. Gracias.
Valora esta pregunta


0