Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Megan en 12 Agosto 2009, 07:34 am



Título: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Megan en 12 Agosto 2009, 07:34 am
Buenos Dias, aqui otra vez  :-[  :-[ , estoy siguiendo el manual de Microsoft Exprees Edtidion Buil a Program Now 2008, en la parte de base de datos, eh creado las tablas tal cual lo dice alli en el manual, pero cuando creo las relaciones asi

(http://i32.tinypic.com/r2um3b.jpg)

Y para comprobar que funciona la clave foranea eliminando filas de algunas de las tablas, me las termina eliminando, que es lo que no tendria que hacer, me tendria que dar error debido a la clave foranea (FK), pero no, me las borra, ya cree las tablas de nuevo, la relaciones de nuevo y lo mismo, no se donde estara el error. Me ayudan por favor. Muchisimas Gracias


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Hadess_inf en 12 Agosto 2009, 18:22 pm
Lo que pasa es que estan en cascada.

Mira (http://www.java2s.com/Code/SQLServer/Constraints/DELETECASCADEandUPDATECASCADE.htm)


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Pablo Videla en 13 Agosto 2009, 00:58 am
Tienes la creacion de tus tablas en codigo SQL? quizas no estan registrada como foranea realmente , creaste las constraint?


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Megan en 13 Agosto 2009, 05:41 am
Gracias chicos, por responder siempre y ayudarme. La base de datos es Basada en Servicios, entonces fui creando las tablas y despues agregue el contenido. Ahora lo que sucede chicos me fijo en las Reglas de Actualizacion y Eliminacion, estan Sin Accion. No se por que no me dispara el error que me tendria que salir. Muchas gracias


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Pablo Videla en 13 Agosto 2009, 14:23 pm
Puede ser por las siguientes razones
1.- Lo que dijo hades_inf , puedes que tengas las constraint delete on cascade o algo asi , lo que significa es que elimina en cascada , osea , elimina segun la primary key y las foraneas de las otras tablas ...

2.- Puede que no hayas colocado las constraint como deberias , osea que no hayas creado realmente las foreign key y por eso te elimina el contenido sin error , te propongo que hagas las tablas en codigo sql CREATE TABLE.... y asi nosotros analizamos lo que hiciste , saludos.


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Megan en 13 Agosto 2009, 19:15 pm
Puede ser por las siguientes razones
1.- Lo que dijo hades_inf , puedes que tengas las constraint delete on cascade o algo asi , lo que significa es que elimina en cascada , osea , elimina segun la primary key y las foraneas de las otras tablas ...

2.- Puede que no hayas colocado las constraint como deberias , osea que no hayas creado realmente las foreign key y por eso te elimina el contenido sin error , te propongo que hagas las tablas en codigo sql CREATE TABLE.... y asi nosotros analizamos lo que hiciste , saludos.

Buenas Tardes no lo logro entender bien lo de Constraint

Por otro lado me es dificil crear las tablas mediante codigo ya que recien me estoy iniciando en ADO. Muchas Gracias


Título: Re: Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
Publicado por: Hadess_inf en 13 Agosto 2009, 19:35 pm
Código
  1. CREATE TABLE categoria
  2. (
  3. codcat INT PRIMARY KEY,
  4. categoria VARCHAR(30)
  5. )
  6. GO
  7.  
  8. CREATE TABLE producto
  9. (
  10. codpro INT PRIMARY KEY,
  11. codcat INT FOREIGN KEY REFERENCES categoria(codcat),
  12. nombre VARCHAR(30)
  13. )
  14. GO
  15.  
  16. INSERT INTO categoria VALUES (1,'Lacteos')
  17. INSERT INTO categoria VALUES (2,'Bebidas')
  18. INSERT INTO categoria VALUES (3,'Comestibles')
  19.  
  20. INSERT INTO producto VALUES (1,1,'Gloria')
  21. INSERT INTO producto VALUES (2,2,'Pepsi')
  22. INSERT INTO producto VALUES (3,2,'Coca Cola')
  23. INSERT INTO producto VALUES (4,3,'Arroz')
  24. INSERT INTO producto VALUES (5,3,'Azucar')

codcat int foreign key references categoria(codcat) (Constraint)

En la tabla producto a la hora de ingresar uno nuevo necesitas especificar un codigo que exista en la tabla categoria, de esa forma podras decir que dicho producto pertenece a dicha categoria.

Código
  1. INSERT INTO producto VALUES (4,3,'Arroz')

El producto Arroz cuyo codigo es 4, pertenece a la categoria cuyo codigo sea 3 (en este caso comestibles).

¿Es necesario que al crear mis tablas defina los Constraint?

No es una obligacion, si no las defines y efectuas consultas ya sean insert, update, delete no te mostrara ningun error.

¿Es recomendable usar Constraint?

El hecho que no sea obligatorio usarlas no significa que no se deban usar, es mas, es muy recomendable usarlas (casi una regla cuando trabajaras con una BD bien formada).


Te recomienda des una lectura sobre el tema.
Enlace 1 (http://www.mssqlcity.com/Articles/General/using_constraints.htm)

Saludos