jbailey: (Default)
[personal profile] jbailey
My brain is drawing a blank on this:

Let's say I have a class Group and a class Person, where there's an n:m relationship between these. It's simple to say that Group could have an attribute "members" which is a collection of Persons, or Person could have an attribute "groups" which is a collection of Groups.

The problem then is that there's no relationship properties there. I can't easily describe for how long the person has been a member of the group, when that membership expires, etc. It seems to me that these type of properties ought to be describable in an elegant way. Perhaps as a characteristic of the array? I want to do this ideally in a way that for items that have no meaningful characteristics I can just use a standard Array class of some sort, but that when properties come up, I want to be able to add them silently so that existing code can continue to just work.

m:n relationships

Date: 2007-02-02 12:36 am (UTC)
From: (Anonymous)
sfllaw is right, you would normally add a third class "Membership" (or similar) which references a Group and a Person and contains additional attributes of the membership.
If you have a data representation which allows for arrays in a class, you could add arrays to Group and/or Person which contains references to all the Memberships of that Group/Person. However, if you use such an array, you have to make sure that you always update the array when you add or remove a membership from the list of Memberships. In a relational database context, I would however strongly advise against addition of such arrays, even if the database would permit them. It can get quite complicated and nasty to debug when the array(s) get(s) out of sync relative to the Memberships. I grew quite fond of using mostly relational database like structures in programs I wrote: Don't store the same data twice, even if that might make the program slower on some occasions (for SQL databases, this is rare), it makes it a lot easier to maintain data integrity.

Regards,
Sven

April 2010

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 1st, 2026 05:50 am
Powered by Dreamwidth Studios