Maybe yes, maybe no. In this case, the *logical* relationships exist;
you just aren't enforcing them. Even if you open the Relationships
window and define a relationship between two tables, unless you check
the box to Enforce Referential Integrity, all you're doing is making a
pretty diagram that describes the logical relationships that you intend
should exist between the tables, and giving the Query Designer a clue
how to set up the join when both tables are added to a query's design
view. That's fine, so long as you realize that there is absolutely
nothing -- except your coding ingenuity and the good will of your
users -- to make sure that the logical relationship you have in mind
actually holds true in your data.
Once you put a check mark in that Enforce Referential Integrity box,
though, it's a different story. Now you've made it the responsibility
of the database engine to make sure that relationship always holds true.
From this moment on, it will simply refuse to store any data that would
contradict that relationship. It applies retroactively, too, in that
you won't even be able to create an enforced relationship is there is
already data in the table that would contradict it. This is a very
powerful tool for ensuring that the data stored in the database is
always valid according to the rules you have set up.
On the other hand, it can be cumbersome at times, for that very reason.
Mass updates and deletes have to be performed in the proper order. For
example, you can't delete all the records in a table and reload them
from some other source, if there is a child table that has an enforced
relationship to that table. Unless you want to delete all the child
records first, and restore them afterward, you have to drop the
relationship, do the delete and reload, and the recreate the
relationship. Thus, enforced relationships make you think carefully
about how to carry out operations of this sort -- but then, you *should*
think carefully about such things.
So ...
+ for a personal-use database where you have control over how data
is entered and can be sure that the logical relationship won't be
subverted by those pesky users, or
+ if the referential validity of the data is not very important, or
+ for special-use work tables on which you want to be able to
perform mass deletion and insertions without having to worry about
related records,
... you don't need to create enforced relationships. But for any
serious application, where the validity of the data is important, or
when the database will be used by people other than yourself, then
defining relationships and enforcing referential integrity is absolutely
essential.
--
Dirk Goldgar, MS Access MVP
www.datagnostics.com
(please reply to the newsgroup)