Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v diff -u -r1.25 -r1.26 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 16 Feb 2005 00:21:02 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 4 Jun 2006 00:45:24 -0000 1.26 @@ -1,4 +1,5 @@ -
By Rafael H. Schloming, Mark Thomas
+ +By Rafael H. Schloming, Mark Thomas
OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.Almost all database-backed websites have users, and need to model the @@ -15,7 +16,7 @@ member of the division and the corporation, and works at (is a member of, but in a different sense) a particular office. OpenACS's Parties and Groups system will support such complex relations faithfully.
Historical Motivations
The primary limitation of the OpenACS 3.x user group system is that it - restricts the application developer to representing a "flat group" + restricts the application developer to representing a "flat group" that contains only users: The user_groups table may contain the group_id of a parent group, but parent-child relationship support is limited because it only allows one kind of relationship between @@ -27,8 +28,8 @@ scope, user_id, and group_id columns was used to identify the party. One disadvantage of this design convention is that it increases a data model's complexity by requiring the programmer - to:
add these three columns to each "scoped" table
define a multi-column check constraint to protect against data corruption - (e.g., a row with a scope value of "group" but a null + to:
add these three columns to each "scoped" table
define a multi-column check constraint to protect against data corruption + (e.g., a row with a scope value of "group" but a null group_id)
perform extra checks in Tcl and PL/SQL functions and procedures to check both the user_id and group_id values
In sum, the goal of the Parties and Groups system is to @@ -175,39 +176,39 @@
The parties and groups system provides an API for answering the question: - "Is party P a member of group - G?"
The parties and groups system provides an API for answering the question: - "Is group GC a component of group - GP?"
The parties and groups system provides an API for answering the question: - "Which parties are members of group G?"
The parties and groups system provides an API for answering the question: - "Which groups are components of group G?"
The parties and groups system provides an API for answering the question: - "Of which groups is party P a member?"
The parties and groups system provides an API for answering the question: - "Of which groups is group G a component?"
The parties and groups system provides an API for answering the question: - "Is party P allowed to become a member of group - G?"
The parties and groups system provides an API for answering the question: - "Is group GC allowed to become a component - of group GP?"
Since many pages at a site may check membership in a group before serving