----- Original Message -----
From: "Tim Ferguson" <
[email protected]>
Newsgroups: microsoft.public.access.tablesdbdesign
Sent: Thursday, March 04, 2004 8:33 AM
Subject: Re: Exceeds maximum index number
(e-mail address removed) (RSGinCA) wrote in
Unfortunately, it's quite a common sentiment around Access circles and
arises from the fact that this one program allows you to draw lines in the
"relationships" window and pretend they are relationships, with some kind
of optional "enforce relational integrity" property.
WHAT "is quite a common sentiment around Access circles"? Taking quotes out of
context? Seriously, I don't think that is what you were refering to, but I'm
not sure what it was that you were actually referring to.
It's a wrong-headed
attempt to make Access an end-user tool rather than a developer platform
and is just not a feature of real dbms systems.
Again, I'm not sure what you are talking about, but I suspect I agree with what
you're saying...
If we are talking about relational databases,
I was indeed talking about relational databases. Perhaps I was making too much
of an assumption about the context, and didn't specifically state that my
comments were in the context of relational DBMSes.
they _all_ provided the first
because that is inherent in the notion of R.
'First' refers to "automated capability of enforcing referential integrity", I
assume. I have to disagree on that point. I worked with a relational dbms in
which there was absolutely nothing that the dbms did to prevent someone from
adding a child record without a parent record being present. Sure, it's
"inherent in the notion of R" that you can't have a child record without a
parent, but that's theory. I'm talking about real DBMSes and what they do.
However, this was rarely a problem, as long as you know what you're doing.
Plenty of relational databases have been developed and work just fine without
relying on the dbms to enforce referential integrity.
The place where it is (or can be) a problem is in situations where users have
direct access to the data in the dbms. This is situations like Access's
datasheets. There, if the dbms doesn't enforce RI, the user can delete a
master record without deleting the child records, or he could change a key
field in a master record not knowing that he's probably leaving orphanned child
records.
The second is not part of the
R model at all, but is provided by many systems as a (dubious) convenience
to the developer.
'Second' refers to "automated capability for cascading updates or deletes", I
assume. It also protects the system from wayward users (and developers!)
directly accessing the data.
What you are saying was true of previous systems like network and
hierarchical dbs, and that's why they died so fast when R came out. I am
old enough to remember Fabian Pascal's outbursts on Compuserve as the old
guard went through the pain of moving.
Apparently so. But for me, that kind of error means it's not working.
Of course. However, in my message I had indicated that the programs had to be
set up right, i.e. coded in such a way that it wouldn't allow things like
"having tests without patients".
If I thought you were, I would not have been nearly so rude
No: it's saying that relationships exist whether you switch on RI or not.
And what's wrong (incorrect) about that?
So what else use is it? If a relationship does not protect the data it
doesn't actually do anything at all. In Access, a line drawn in the
relationships window without RI enforced, does nothing except provide a
default join in the query design grid. Big Deal.
I get the impression we're talking about 2 different things... Or maybe,
looking at things from 2 entirely different perspectives.
To me, it's like my 'relationship' to my mother. My mother is my mother. That
is a statement of fact. I don't consider that to be a 'constraint'. However,
there are some rules about my relationship to my mother which I would consider
to be 'constraints'. Such as, "you don't talk back to your mother". Now, THAT
is a constraint!
The statement of fact that my mother is my mother, reflect the real
relationship. A line on a geneology chart between me and my mother is nothing
but a reflection of the fact that she is my mother. You ask the question "So
what else use is it?". If you ask me that question about that relationship
between me and my mother, what can I say?
No: it's an instruction to the db engine about what operations are legal
and what are not. "Statements of fact" are important in the documentation
and the data dictionary etc. but the db engine won't care about them at
all.
I disagree. It's those constraints associated with the relationship that are
telling the "db engine about what operations are legal and what are not"
True: see my other response, having done some testing.
As has been suggested, it's a bit of an odd design and I guess there
probably is a way of getting the links down to fewer than 31; but of course
I don't know his data and there is no theoretical reason why he should have
to.
Rick