Index: openacs-4/packages/acs-core-docs/www/groups-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v
diff -u -r1.34.2.1 -r1.34.2.2
--- openacs-4/packages/acs-core-docs/www/groups-design.html 9 Jun 2016 08:44:49 -0000 1.34.2.1
+++ openacs-4/packages/acs-core-docs/www/groups-design.html 23 Jun 2016 08:32:45 -0000 1.34.2.2
@@ -13,14 +13,14 @@
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
-groups to be represented. Moreover, the Oracle database's limited support
+groups to be represented. Moreover, the Oracle database's limited support
for tree-like structures makes the queries over these relationships
expensive.
In addition, the Module Scoping design in OpenACS 3.0 introduced a
party abstraction - a thing that is a person or a group of people -
though not in the form of an explicit table. Rather, the triple of
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
+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
group_id
)
perform extra checks in Tcl
and PL/SQL
@@ -45,11 +45,11 @@
The set of all defined persons. To allow easy sorting of persons, the
name requirement 30.10 is met by
-splitting the person's name into two columns: first_names
and
+splitting the person's name into two columns: first_names
and
last_name
.
users
The set of all registered users; this table includes information about -the user's email address and the user's visits to the site.
user_preferences
+the user's email address and the user's visits to the site.user_preferences
Preferences for the user.
groups
@@ -76,9 +76,9 @@
When a specialized type of group is required, the group type can be extended
by an application developer. Membership constraints can be specified at
creation time by passing a parent group to the constructor.The membership_rels
and composition_rels
tables indicate
-a group's direct members and direct components; these tables do not
+a group's direct members and direct components; these tables do not
provide a record of the members or components that are in the group by virtue
-of being a member or component of one of the group's component groups.
+of being a member or component of one of the group's component groups.
Site pages will query group membership often, but the network of component
groups can become a very complex directed acyclic graph and traversing this
graph for every query will quickly degrade performance. To make membership
@@ -162,7 +162,7 @@
person_id persons.person_id%TYPE
) return varchar;
User
acs_user.new
creates a new user and returns the user_id
.
-The function must be given the user's email address and the full name of
+The function must be given the user's email address and the full name of
the user in two pieces: first_names
and last_name
. All
other fields are optional. The interface for this function is:
function acs_user.new ( @@ -194,7 +194,7 @@ user_id users.user_id%TYPE ) return varchar;
Use the procedures acs_user.approve_email
and
-acs_user.unapprove_email
to specify whether the user's email
+acs_user.unapprove_email
to specify whether the user's email
address is valid. The interface for these procedures are:
procedure acs_user.approve_email ( user_id users.user_id%TYPE @@ -232,7 +232,7 @@ party_id parties.party_id%TYPE, ) return char;
Membership Relationship
membership_rel.new
creates a new membership relationship type
-between two parties and returns the relationship type's rel_id
.
+between two parties and returns the relationship type's rel_id
.
All fields are optional and default to null except for rel_type
which defaults to membership_rel. The interface for this function is:
function membership_rel.new ( @@ -278,7 +278,7 @@ rel_id membership_rels.rel_id%TYPE );
Composition Relationship
composition_rel.new
creates a new composition relationship type
-and returns the relationship's rel_id
. All fields are optional
+and returns the relationship's rel_id
. All fields are optional
and default to null except for rel_type
which defaults to
composition_rel. The interface for this function is:
function membership_rel.new (