Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Eliminación de Datos relacionados

Estas en el tema de Eliminación de Datos relacionados en el foro de SQL Server en Foros del Web. Hola Amigos del Foro estoy desarrollando una aplicación en VB.NET con Visual Studio 2013 y Sql Server 2012. Y tengo la siguiente consulta cuando agrego ...
  #1 (permalink)  
Antiguo 17/07/2014, 04:07
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Eliminación de Datos relacionados

Hola Amigos del Foro estoy desarrollando una aplicación en VB.NET con Visual Studio 2013 y Sql Server 2012. Y tengo la siguiente consulta cuando agrego por ejemplo un Nuevo Cliente, para que el usuario seleccione la ciudad de ese Cliente utilizo Combos Dependientes. O sea que seleccionen el País, la Provincia y la Ciudad, los combos funcionan bien el problema es que yo quiero que la carga de los países, provincias, Ciudades sean configurable, que el usuario que lo utilice pueda agregar y eliminar países, provincias y ciudades pero no sé cómo controlar eso porque que pasaría y el usuario elimina una ciudad provincia o país que ya fue asignada a otro Cliente. Para determinar si un país, provincia o ciudad esta eliminada utilizo en la base de datos el tipo de dato BIT por ejemplo si Pais_Eliminado = True o sea que si fue eliminado no la cargo en el combo, pero que debería hacer si ese país ya fue asignado a otro Cliente. Y en la Tabla Clientes guardo el ID de la ciudad, y de esa forma ya sé de qué provincia y país es el Cliente. Espero haber sido claro con mi pregunta, desde ya muchas gracias por la ayuda que me puedan llegar a brindar y espero su pronta respuesta.
  #2 (permalink)  
Antiguo 17/07/2014, 04:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminación de Datos relacionados

Los datos de tablas base, como las que describes, son SIEMPRE FIJOS, y NUNCA se debe permitir a un usuario eliminar esos datos.
JAMÁS.

Son datos core del sistema, no pertenecen al usuario
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/07/2014, 04:41
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Eliminación de Datos relacionados

Gracias por tu pronta respuesta amigo, pero yo necesito hacerla configurable a la aplicación. Por ejemplo también me gustaría permitirle al usuario Agregar o Eliminar Grupos Sanguíneos obviamente que yo no los elimino a esos datos de la Base de datos, lo que hago es simplemente no mostrarlos en el listado me entiendes, porque tengo un campo en la tabla del tipo bit. A ver si te lo puedo explicar mejor con el siguiente ejemplo:
Nombre Tabla: GrupoSanguineo
Campos:
GrupSan_ID int identity
GrupSan_GrupoSanguineo varchar(70)
GrupSan_Eliminado Bit

Esa sería la estructura de la tabla GrupoSanguineo y cuando cargo un listado en la aplicación lo hago de la siguiente manera:
Código SQL:
Ver original
  1. SELECT
  2. GrupoSanguineo.GrupSan_ID,
  3. GrupoSanguineo.GrupSan_GrupoSanguineo
  4. FROM GrupoSanguineo
  5. WHERE GrupoSanguineo.GrupSan_Eliminado = 'False'
  6. ORDER BY GrupoSanguineo.GrupSan_GrupoSanguineo;
Y cuando se elimina un grupo sanguíneo de la aplicación con el botón Eliminar, lo único que hago es cambiar el valor del campo GrupSan_Eliminado = 'True' y de esta forma no lo muestro en el listado.
Pero el problema que tengo es que no sé cómo controlar cuando Elimino (entre comillas porque ese registro No se elimina solamente No se muestra en el listado) por ejemplo un grupo sanguíneo que ya fue asignado a alguna persona.
Espero a ver sido claro y desde ya muchas gracias por la ayuda que me puedas llegar a brindar amigo gnzsoloyo.

Última edición por gnzsoloyo; 17/07/2014 a las 06:13
  #4 (permalink)  
Antiguo 17/07/2014, 06:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminación de Datos relacionados

El problema es que estás confundiendo los datos y estructuras de la base, con los datos que se deben mostrar al usuario. Son dos cosas completamente diferentes.
La base de datos es una estructura fija, y sus datos core son fijos. Se trata de elementos que no se sacan ni se ponen porque si, y sólo se modifican si el entorno general cambia. Y por entorno general me estoy refiriendo a cambios que afectan atodos los usuarios al mismo tiempo.
El tema de los datos que un usuario quiere ver o decide eliminar de sus reportes o vistas, requiere que existan estructuras de la base, o bien otro tipo de componentes (por ejemplo XMLs usados para eso) de configuración.
Puedes crear una o más tablas que guarden las configuraciones de los reportes y vistas de edición que el usuario quiera elegir, o bien los almacenas en XML para eso. Lo que quieras, ya que hay tantas formas de hacerlo como imaginación puedas usar.
Lo que NO debes hacer es afectar los datos core, y si un X conjunto de datos del usuario son opcionales (modificables por configuración), entonces esos datos o son nulables en su tabla, o no podrás validarlos por FK, y en consecuencia deberás realizar procesos complejos de validación para abarcar sólo aquellos que los deban cumplir.

La verdad, y ya opinando como analista funcional, yo no considero conveniente dejar al usuario tanta flexibilidad, si no es total, absoluta y estrictamente necesaria. Dar tal dominio a los usuarios, en el mundo real, tiende a la creación de sistemas demasiado complicados (complicados, no complejos), de muy difícil mantenimiento y peor depuración.
La tasa de errores se te puede ir a las nubles.

¿Por qué necesitas darle semejante nivel de permisos para hacer y deshacer datos?
¿Realmente te parece conveniente?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 17/07/2014, 10:20
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Eliminación de Datos relacionados

Estoy completamente de acuerdo con vos amigo gnzsoloyo, es más en un sistema que realice anteriormente tuve que hacer algo similar y No permitía que los usuarios Agregaran, Eliminaran o Modificaran como vos decís los datos core. El problema es que la persona que me lo pidió lo requiere así me entiendes.
  #6 (permalink)  
Antiguo 17/07/2014, 10:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminación de Datos relacionados

Yo te entiendo.
Ahora te toca a ti hacerle entender al que te pide eso, que no es posible hacer lo que quiere, sin complicar el sistema hasta niveles destructivos.
Que un cliente te pida algo, no quiere decir que ese algo sea posible. Tu responsabilidad como desarrollador es hacerle saber al cliente cuáles cosas se deben hacer y cuales cosas no se pueden realizar.


Si luego de eso el tipo quiere seguir con eso, yo directamente no haría el trabajo, porque pasarás más tiempo reparando los problemas causados, que desarrollando la aplicación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 17/07/2014, 10:31
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Eliminación de Datos relacionados

Tendré que pensar alguna idea de cómo solucionarlo, igual te doy las gracias amigo gnzsoloyo, por tus buenos consejos, tu interés y tu pronta respuesta.
  #8 (permalink)  
Antiguo 17/07/2014, 10:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Eliminación de Datos relacionados

el cliente puede pedir hasta que la aplicacion le prepare el desayuno y le cuente un cuento antes de dormir, es obligacion de la persona que la va a realizar el decirle al cliente, ok esta bien tu idea pero creo que esteo, esto y esto no es factible por esto y por esto......es mejor hacerlo desde el levantamiento del proyecto antes de ponerte a trabajar en el, eso te evitara muchisimos dolores de cabeza...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 17/07/2014, 10:47
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Eliminación de Datos relacionados

Ja,ja si es cierto pero no se podría por ejemplo No permitir al usuario que elimine datos que ya fueron asignados a algún registro?
  #10 (permalink)  
Antiguo 17/07/2014, 10:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminación de Datos relacionados

Yo ya te plantee la solución práctica, desde mi experiencia: Vistas y formularios parametrizables por seleccion del usuario.
Eso permitiría que se vieran o no ciertas cosas para un usuario, sin tener que por eso eliminarlas de la base para los demás.
Es bastante común, y básicamente es semejante a lo que se hace en centenares de sistemas comerciales y de adminsitración. Lo que usualmente denominas "sistemas customizables", en los que la herramienta tiene N tipos de datos, pero por perfil de usuario configuras que ve y qué no.
No es nada raro, es muy usado, pero algo complejo de diseñar.

Tu dirás si te sirve...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 19/07/2014, 05:29
 
Fecha de Ingreso: noviembre-2013
Mensajes: 7
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Eliminación de Datos relacionados

Hola amigo gnzsoloyo te comento que lo solucione al problema.
Cuando yo doy de alta a una persona en el sistema solamente muestro los Grupos Sanguíneos que No han sido Eliminados (Eliminadas del Sistema por el Usuario, pero no de la Base de Datos porque esos datos No los eliminado de la base). Y cuando quiero modificar los datos de esa persona No examino el campo Eliminado al mostrar los datos.

Etiquetas: relacionados, server, siguiente, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.