PDA

Ver la Versión Completa : Integridad Referencial


pablo
01-01-2004, 22:26:52
hola, quisiera saber como se usa y para que sirve exactamente la seccion de definicion
de integridad referencial entre tablas del database desktop que trae delphi...

yo intenté generar una relacion entre el campo codigoDeLocalidad de la tabla Cliente con el campo
codigoDeLocalidad de la tabla localidades para mantener integridad entre ellos pero al elegir
el primero no me muestra la tabla localidades para elegir el segundo, eso que el alias esta definido
y ambas tablas estan en el mismo directorio...

saludos y gracias
pablo

marcoszorrilla
01-01-2004, 22:37:03
Establecer integridad referencial en Paradox mediante el DatabaseDesktop

1º. - Tendremos dos tablas que casan mediante un campo común, en la primera será clave única.

2º. - Las dos tablas deben de estar en la misma carpeta, ya que sino no nos las muestra y entonces no podemos relacionarlas.

3º. - Abrimos solamente la tabla dependiente, no la maestra.

4º. - Establecemos la integridad referencial entre ambas tablas.

5º. - Nos creará un índice en la tabla secundaria, con el mismo nombre del campo que casa con la tabla maestra.

6º. - En Delphi, no tiene porque declararse como maestro detalle.


Finalmente hay que destacar que la opción Strict integrity, no debe de marcarse pues según indica la información de Paradox, esto impediría la actualización en cascada que es precisamente lo que se persigue, ya que esta opción impide el cambio o borrado de cualquier ocurrencia en la tabla maestra que tenga correspondencia en la tabla detalle.

Un Saludo.

pablo
03-01-2004, 04:50:31
hola; muchisimas gracias por responderme, aunque me quedo una duda:

es cierto que yo persigo la actualizacion en cascada; pero que
ocurre si yo tengo que eliminar un registro de la tabla maestra, ¿que pasa con
los registros dependientes de otras tablas?

*¿se borran?
*¿quedan con el campo nil?

en el caso que yo te pregunto relacione dos tablas:

Tabla clientes y tabla localidades, donde en la primera hay un campo llamado
codigoDeLocalidad (codigo postal) y en la segunda estan los codigos con los
nombres de las ciudades, y se supone que ademas del domicilio del cliente registro
el codigo de la ciudad donde vive...

que me conviene hacer en base a lo anterior?

saludos y gracias
pablo

marcoszorrilla
03-01-2004, 14:02:53
Aquí tienes la información, pero en inglés, no tengo tiempo de traducirlo.


Update Rule

Database Desktop provides two update rules for tables that use referential integrity. Update rules specify what happens when a user tries to update or delete data in a parent table that has dependent records in a child table.

Prohibit

Prohibit specifies that you cannot change or delete a value in the parent's key if there are records that match the value in the child table.
For example, if the value 1356 exists in the Customer No field of Orders, you cannot change that value in the Customer No field of Customer. (You can change it in Customer only if you first delete or change all records in Orders that contain it). If, however, the value doesn't exist in any records of the child table, you can change the parent table.

Cascade

Cascade specifies that any change you make to the value in the key of the parent table is automatically made in the child table. If you delete a value in the key of the parent table, dependent records in the child table are also deleted. Cascade is the default update rule.
To cascade an update across tables, Database Desktop must place a lock on the target table. If the lock is denied (because another user has already placed a lock), Database Desktop cannot perform the cascade update.

If you are working with SQL tables, the availability of cascading updates and deletes varies according to the table type and software version.

Strict Referential Integrity

Choose Strict Referential Integrity to protect your data from being corrupted by earlier versions of Database Desktop (the default). Strict Referential Integrity specifies that Paradox for DOS cannot access a table on which you've defined referential integrity.
Suppose you use a version of Paradox for DOS to open a Paradox for Windows table that uses referential integrity. You could add data that violates the referential integrity, because the version of Paradox you're using doesn't recognize the referential integrity. To prevent versions of Paradox for DOS from opening the table, check the Strict Referential Integrity check box.


Un Saludo.