Hi David, Really appreciate you bringing these comments to the mailing list, its making me really think about how to do modeling within a repository, thanks!
What about when the repository is being used instead of a database? ie. User stores a bunch of contacts User stores a bunch of buildings User wants to link each building to a contact. Different buildings may want to refer to same contact. Isn't this a perfect use case for using a reference? Cheers, Mark On 7/7/07, David Nuescheler <[EMAIL PROTECTED]> wrote:
Explanation --- References imply referential integrity. I find it important to understand that references do not just add additional cost for the repository managing the referential integrity, but they also are costly from a content flexibility perspective. Personally I make sure I only ever use references when I really cannot deal with a dangling reference and otherwise use a path, a name or a string UUID to refer to another node. Example --- Let's assume I allow "references" from a document (a) to another document (b). If I model this relation using reference properties this means that the two documents are linked on a repository level. I cannot export/import document (a) individually, since the reference property's target may not exist. Other operations like merge, update, restore or clone are affected as well. So I would either model those references as "weak-references" (in JCR v1.0 his essentially boils down to string properties that contain the uuid of the target node) or simply use a path. Sometimes the path is more meaningful to begin with. I think there are usecases where a system really can't work if a reference is dangling, but I just can't come up with a good "real" yet simple example from my direct experience.
-- Best, Mark Waschkowski
