https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114158

Revision: 114158
Author:   jeroendedauw
Date:     2012-03-19 17:27:46 +0000 (Mon, 19 Mar 2012)
Log Message:
-----------
added schema docs

Added Paths:
-----------
    trunk/extensions/EducationProgram/docs/
    trunk/extensions/EducationProgram/docs/schema.txt

Added: trunk/extensions/EducationProgram/docs/schema.txt
===================================================================
--- trunk/extensions/EducationProgram/docs/schema.txt                           
(rev 0)
+++ trunk/extensions/EducationProgram/docs/schema.txt   2012-03-19 17:27:46 UTC 
(rev 114158)
@@ -0,0 +1,72 @@
+This page describes the database schema used by the Education Program extension
+from a high level perspective. Documentation on individual fields can be found
+in the schema file at sql/EducationProgram.sql.
+
+An online version of this document can be found at
+https://www.mediawiki.org/wiki/Extension:Education_Program/schema
+
+== Relational, denormalized and revision storage ==
+
+The extension keeps up to 3 copies of the same data, each optimized
+for a particular purpose.
+
+* Relational storage is the data in it's canonical form. All other copies of 
the
+  data are computed from this. This data can be found in some of the fields of
+  the main tables.
+
+* Denormalized storage is the data in a format optimized for doing queries 
against.
+  It is always computed from the relational storage data. This data can be 
found
+  in some of the fields of the main tables.
+
+* Revision storage is the ep_revisions table which contains blobs with the
+  relational data for one particular object.
+
+The extension uses the DBDataObject and DBTable classes for virtually all
+it's database interaction. These have mechanisms for distinguishing between
+relational and denormalized data (referred to as "summary data" in their docs).
+All revisioning work is done through EPRevision and EPRevisions using 
EPRevisionedObject.
+
+== Where to find the stuff ==
+
+=== Institutions ===
+
+Institutions are stored in the ep_orgs table. You can get the linked courses
+via the org_courses field, which is an array with course IDs and is a 
denormalized field.
+
+=== Courses ===
+
+Courses are stored in ep_courses. They are linked to their institution via
+the course_org_id field, which is a foreign key on ep_orgs.org_id.
+
+You can find linked users (students, instructors, ambassadors) via the
+ep_users_per_course table. This table contains the users id, the course id
+and an integer indicating the role the user has.
+
+=== Articles ===
+
+Students can associate themselves with articles they are working on.
+These are stored in the ep_articles table. It contains a course id,
+a user id and a page id (foreign key on page.page_id), which can be
+used to get all articles worked on by a course, a student, or a
+combination of both.
+
+=== Students ===
+
+Students are stored in the ep_students table. The students table
+can be through of as an "extension" to the user table. It has
+a user_id field, which is a foreign id on user.user_id and
+several other fields with student data. This is mostly denormalized
+data though, so this tables primary use is getting lists of
+students (or linked data) in a computational sane fashion.
+
+=== Ambassadors and instructors ===
+
+Like students, each of these roles have their own tables,
+which can be thought of as extensions to the user table:
+
+* ep_instructors
+* ep_oas (Online Ambassdaors)
+* ep_cas (Campus Ambassdaors)
+
+The ambassador tables contain ambassador profile info.
+The instructor table is currently not used.


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to