thanks moron
For clarity, a Notice is eg a Wedding, Birth or Death announcement which appears in a newspaper. This is (an excerpt of) what my DB looks like:
Table: object (generic object)
------------------------------
id
type_id
status
parent_id
creator_id
created
last_modified
Table: notice (adds notice specific fields to the object table)
---------------------------------------------------------------
id (1 to 1 relationship with object.id)
notice_type (ie wedding, funeral, birth etc)
title
content
etc
Table: charity (adds charity specific fields to the object table)
-----------------------------------------------------------------
id (1 to 1 relationship with object.id)
name
description
url
etc
The editor of a notice can choose a number of charities to link to, so a notice can have many charities. This is stored in the members table:
Table: members (link table)
----------------------------
set_id (in this example, the notice ID)
member_id (in this example, the charity ID)
Notices can have many Comments, Images, Charities, Editors. So my question really boiled down to, should I have
- separate List/Set/Container objects for each list of items, so that you create a new ImageList, which is a child (not a subclass) of the Notice, and the members.set_id == ImageList.id
- or set_id == notice.id, and then you filter the set members you want by object type (ie image/comment etc)
After discussion in the CB with bart and castaway, I think i've abandoned both of those, and now what I'm going to do is the following:
- A Set does not live in the database as an object, neither does Notice inherit from the Set
- Instead, I can create a Set object as follows:
$set = Set->new({
set_id => $notice->id,
name => 'imagelist', # combined with set_id to provide
+ an ID for caching
selectors => {
type => 'image'
},
});
... which is really just a glorified array, with methods to check membership, and to add / delete members from the list, almost like an SQL view.
| [reply] [d/l] [select] |
| [reply] |
I understand your second para, and yes, that is what I'm doing.
But would you mind explaining your first para? Why is the 1:1 actually 1 to many? Are you refering to the Object/Notice join, or to the Members table? I realise it is a many-to-many relationship, with a link table giving you many-to-one and one-to-many for notice and charity respectively. Is that what you're talking about?
I'm not familiar with the terminology, which is probably why I'm missing something here (eg 1::Oor1).
thanks moron
clint
| [reply] |