takes
is filled with (Student, Course)
-pairs that each specify a specific course that that specific student is taking. The same student can appear in more pairs and the same course can appear in more pairs. But each combination is unique, a specific pair (x,y) can only appear in the set once.takes
is filled with (Student, Course)
-pairs that each specify a specific course that that specific student is taking. The same student can appear in more pairs and the same course can appear in more pairs. But each combination is unique, a specific pair (x,y) can only appear in the set once.[TOT]
in the definition of the relation takes
. It is called a multiplicity. The multiplicity 'total' means that each student must take at least one course.isPartOf
?isEnrolledFor |- takes ; isPartOf~
|-
as separator. On each side of the separator you find a relation. On the left-hand side we have the relation isEnrolledFor
and on the right-hand side you see a relation that is not explicitly defined in the model. This relation is constructed with two relations that are in the model: takes
and isPartOf~
(pronounced as “isPartOf-flip”, indicating the relation in opposite direction). This constructed relation consists of (Student
, Module
)-pairs with a specific student that is taking a course that contains (among others) this specific module.
Try to trace this last description in the model and note that although the result is a pair of two elements, there are actually three concepts involved.
Let’s call this new relation canEnrollFor
.TOT
, and a rule, like isEnrolledFor |- takes ; isPartOf~
?