SQL Access 2000 (I.R.)

Saludos,
Tengo una aplicación en VB 6.0 que utiliza una BD, si la BD de datos no existe la intento crear por código desde VB apoyándome en el LDD de SQL.
Pero no consigo construir una BD idéntica a la que debía de existir.
Bien, por ejemplo
"Create table Ventas
...
idProd INTEGER NOT NULL,
...
FOREIGN KEY (idProd)
References Productos(Id)"
Pero por defecto me añade la integridad referencial(I.R.), y en la BD inicial no existía I.R. Por tanto los procedimientos de modificación y borrado no me funcionan correctamente. Tampoco me vale el borrado en cascada.
Solo si desde un "Create Table..." se pueden relacionar dos campos de dos tablas sin IR. ¿Alguien lo sabe? Muchas gracias.
Respuesta
1
Al poner el Foreign Key crea automáticamente la integridad referencial. Precisamente es la I.R. lo que relaciona dos tablas. Si no quieres tener una regla fija no la pongas.
El problema te vendrá luego al hacer consultas tipo:
Select-- From Productos inner join Ventas on Ventas.Idprod = Productos.Id
Si no tienes la regla I.R. creada puede funcionar perfectamente siempre que cumplas tú la regla en las inserciones Mod...
Las reglas de I.R. diferencian una BASE DE DATOS de un CONJUNTO DE TABLAS. Si no quieres que el ACCESS Verifique la IR no pongas el FOREIGN KEY, pero luego no te extrañe si hay FALLOS EN LA INTEGRIDAD REFERENCIAL (Ventas de productos que no EXISTEN). Cuando tienes la I.R. el error te lo da ANTES DE TENER ERROR, no deja meter ningún dato erróneo en la tabla.
Te Adjunto una respuesta que dí hace poco sobre la I.R..
Espero haberte ayudado
Jorge
**********
Tienes primero que clasificar las tablas como Padre, hijo y nieto.
Primero debes insertar en Padre, después en hijo y por último en nieto.
Si tienes los datos de un paciente de un hospital tienes una tabla con sus datos personales, otra con sus datos médicos y otras con descripciones de los códigos de los datos médicos.
Este tipo de relaciones son llamadas Forein Keys (FK) en la tabla de datos médicos está el IdPaciente como FK con la tabla pacientes, es decir TIENE QUE EXISTIR (el valor que pongas en ese campo) dentro de la tabla pacientes. Son reglas de INTEGRIDAD REFERENCIAL entre las distintas tablas.
Lo mismo ocurre con los datos médicos no puedes insertar un código de departamento si no existe en la tabla de departamentos.
Todas estas reglas hacen la base de datos más robustas, y definen el concepto de Base de datos. Si no tienes las relaciones entre las tablas realmente no estás trabajando con una base de datos sino con un conjunto de tablas.
Existen las denominadas Formas Normales para definir el nivel que tienen tablas de Integridad Referencial.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas