My organisation creates a variety of course modules. There are a number of rules that apply. Below is a (imaginary) route of a module:
- a student must successfully finish courses of "SQL Beginner", "SQL advanced", HTML, XML and PHP to get a diploma.
- one must first finish the "SQL Beginner" course before starting "SQL advanced"
- one must first finish the HTML course before starting XML, and finish that before starting the PHP course.
- one can skip the "SQL Beginner" course, by providing a proof of successfully having taken a "SQL Beginner" course somewhere else
OR by passing a test to proof one's knowledge of the basics of SQL
- one can only skip the PHP course, by providing a proof of successfully having taken a PHP course somewhere else
- there is no predefined order for taking the "SQL Beginner" and HTML courses.
Code:
     +--- pass test ---+
     |                 |
  +--O-- SQL Beginner -O-- SQL advanced --+
  |  |                 |                  |
  |  +--- exemption ---+                  |
  |                                       |
--+--- HTML ---- XML --O------PHP------O--+--
                       |               |
                       +-- exemption --+
We need these rules/dependencies between those courses in our database so that we can
- warn schools that one of their students is taking a course he/she is not allowed for. Like taking the "SQL advanced" course without first having finished "SQL Beginner". Most of the time that means they forgot to give us the test results or the exemption form.
- give diploma's to students who have successfully followed all the courses. Students sometimes take courses without any prior plan, but after two or three years are entitled to one or another diploma.

The rules and dependencies have similarities with BPMn diagrams. So before reinventing the wheel and creating our own BPM-data model, does anyone know how these diagrams can be stored in a database? Or where I could find information about it?
Searching on Google has not given me any good results.