Yves

If user.additionalkeylist and tag.readaccesskeylist are not lists, naming them `...list` misleads & distracts.

You asked earlier how to fit my preliminary solution into your problem. The answer is to (i) write the query that lists access-denied messages, then (ii) write a simple exclusion join from messages to that derived table.

But on (i), how user.additionalkeylist and tag.readaccesskeylist work remains confusing. You appear to say access may come from ...
(i) message->message_revision->message_revision_tag.readaccesskeylist, or
(ii) message_revision->user.additionalkeylist
which implies there are positive values which provide access, but your original query used the condition

   readaccesskeylist /is not null/

as a test for access /refusal/, which seems to contradict what you now say.

PB

-----

Yves Goergen wrote:
On 11.02.2008 17:32 CE(S)T, Peter Brawley wrote:
1. user.additionalkeylist and tag.readaccesskeylist are atomic despite their names?

Yes, I forgot the types. Everything is scalar, varchar or integer. There are not set or otherwise complex data types.

2. You have reciprocal foreign keys, keylist.key referencing user(userID) and user.additionalkeylist referencing keylist.keylistID?

Basically, yes. Although there is a contraint in my application that is not visible in the database structure: I distinguish between "personal" and "virtual" keys. Personal keys must not be part of a user's additional keys list. Virtual keys must not have an additional keys list on their own. (And they must not have logon information.) So there cannot be a cyclic reference. This is documented in the source code and will be enforced on the application layer later.

Reply via email to