moodle design

moodle design

by Petar Atanasov -
Number of replies: 2
Hi,
Currently I am working on a web-based approach for integrating an e-learning system with a generic system for knowledge assessment using didactical tests based on Oracle.
I want to base my work on moodle, but I have minor difficulties (since there is a lack of documentation covering the area of the architecture of the system and specifying the particular designation of separate modules) in revealing the conceptual model of the whole system. I'll appreciate if I could be pointed to some documentation covering the following topics:
  • Grade module - methods used for grading. As far as I can see grade module is referenced by different moodle modules.Let’s take the example of these references with the quiz module: The column grade from the table mdl_quiz_grades seems like a foreign key to a table in the grade module, or could be calculative or resulting from user action?
  • Quiz module - methods used for analysis of question (I suppose quiz module is the main module used for examining students). Is mdl_quiz_grades used to rate  questions by their  difficulty, or it has different semantics ?

Conducting automation tests for the system is very important part of any project – software and web, but in all cases describing the architecture of the system with simple diagrams (even not precise UML diagrams) and words with minimum possible effort is a must, that saves precious time and lets others clarify what’s achieved.

At present time I consider synchronizing the database schemas using AXMLS as an additional work, which will ensure cross platform distribution of the moodle system (an obvious benefit, still more that there is no business logic encapsulated in the database but only a data collectors) but I need a little help to form a vision for these modules and the system as a whole in order to succeed in the settled period with my primary task.

Regards
Petar
MyBlog
Average of ratings: -
In reply to Petar Atanasov

Re: moodle design

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Hi,

Are you aware that we are implementing XML schema in Moodle 1.7 already?

More info: http://docs.moodle.org/en/XML_database_schema
In reply to Martin Dougiamas

Re: moodle design

by Petar Atanasov -
Hi,
Actually I was expecting reply considering my question about modules, but never mind  smile

So, I wasn’t aware about the XML schema for 1.7, but it seems like I've reached paths of the way you do - a long time before me wink and obviously not covering all of the present aspects as you do.

From my point of view I'm considering the creation of small wrapper classes set based in AXMLS in order to simulate the OleDb abstraction and thus to achieve lighter way of manipulating various db schemas - through manipulating objects in something like this target code (especially when creating tables portion) does:

// Create table
MdlDataTable table  = new MdlDataTable("NewMoodleTable"); // could use the empty constructor here
table.Columns(0).Name = "ID";
table.Columns(0).Type = MdlDataTableTypes.Integer(12); // or something like this compatible with portable data dictionary format and the moode requirements
table.Columns (0).PrimaryKey = true;
// other columns goes here
...
// Foreign key reference
table.Columns(lIdx).ForeignKey = someOtherTable.Column(Index);
// UQ definition
table.CreateIndex(mdlIndexTypes.Unique, this.Columns(SomeIndex1), this.Columns(SomeIndex2)
// saving to already created schema definition file
table.Save("mdlDbSchemaFile.xml", SaveMode.Append)

// And in order to collect some db info do something like this:
// simulate GetOleDbSchemaTable
resultantTable = cnn.GetDbSchemaTable(...
// and have all info for the particular table

AXMLS could best be applicable here (since it's working with PostgreSQL, MySQL, Oracle, MSSQL).
I'm also considering another aspect of it - method to dump resulting SQL - it's practical to have traces in every stage of defining db, as well as a way of transforming different xml schema files.

I thought to use java in order to implement the above described abstraction,
but changed my mind - I think in php could be more usable for the community...

I also welcome any opinion on this subject - the truth is somewhere in-between discussions.

Regards
Petar
My Blog