Visual Basic.NET - Consulta Base de datos

   
Vista:

Consulta Base de datos

Publicado por Adrian (2 intervenciones) el 22/04/2014 10:16:23
Saludos, estoy haciendo una aplicacion en vb net para la gestion de una tienda. Tengo varias tablas que se relacionan entre si mediante claves foraneas.

La cosa es que yo he pensado, por ejemplo, que si se borra un cliente de la bd, no tiene por que borrarse tambien los pedidos realizados por ese cliente. Pero al haber fk no me deja hacerlo.

Entonces mi pregunta es, ¿es mejor que se borren los pedidos hechos por el cliente al borrarse el cliente, o hay alguna manera de borrar unicamente el cliente?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta Base de datos

Publicado por Jorge (15 intervenciones) el 22/04/2014 12:56:47
No vas a poder borrar el cliente si lo tienes asociado a pedidos y están relacionados por clave.

Quizá lo que puedas es tener una tabla auxiliar con un histórico de pedidos en los que guardas el cliente como un literal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Base de datos

Publicado por Adrian (2 intervenciones) el 22/04/2014 13:17:33
Si, pero tambien esta la opcion de que si se pueda borrar el cliente y que en el pedido aparezca el cliente como NULL, con el on delete set null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta Base de datos

Publicado por Leopoldo Taylhardat (2 intervenciones) el 22/04/2014 13:26:13
Saludos...
En el diseño de BD se enseña cual es la manera de actuar la BD con respecto a las actualizaciones (update) y las eliminaciones (delete) con respecto a la clave foranea si hay datos referenciados...
Las maneras de actuar son:
"restringida" (restricted) que por defecto es la operación... si hay datos referenciales no se puede actuar (es tu caso).
"cascada" (cascade) si modificas o eliminas el dato referencia se modifican o eliminan los datos referenciados...
"poner nulo" (set null) si eliminas el dato referencia se ponen en valor nulo la columna en los datos referenciados...
"poner por defecto" (set default) si eliminas el dato referencia se ponen en valor por defecto la columna en los datos referenciados...
Así que revisa la definición de tu FK para que la modifiques a tu antojo y actue como tu lo desees...
Notas: dependiendo de la BD (el nivel de desarrollo) existen algunas opciones y otras no...
en un buen diseño (por lo general) o de acuerdo a las necesidades de proceso, nunca se eliminan los datos.... a la tabla referencia se le pone una columna de activo-inactivo para que se procese o no nuevos datos con esa tupla (en tu caso el cliente) pero debes revisar tu programa para agregarle esa columna y las cargas de datos te ignoren los registro inactivos...

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar