We again consider the book data management problem that was considered in Part 1. But now we also consider the data integrity rules (or 'business rules') that govern the management of book data. These integrity rules, or constraints, can be expressed in a UML class diagram as shown in Figure 4.2 below.
In this model, the following constraints have been expressed:
Due to the fact that the isbn
attribute is
declared to be the standard
identifier of Book
, it is mandatory
and unique.
The isbn
attribute has a pattern
constraint requiring its values to match the
ISBN-10 format that admits only 10-digit strings or 9-digit strings
followed by "X".
The title
attribute is mandatory,
as indicated by its multiplicity expression [1], and has a string length
constraint requiring its values to have at
most 50 characters.
The year
attribute is mandatory
and has an interval
constraint, however, of a special form since
the maximum is not fixed, but provided by the calendar function
nextYear()
, which we implement as a utility
function.
Notice that the edition
attribute is not mandatory, but
optional, as indicated by its
multiplicity expression [0..1]. In addition to the constraints described
in this list, there are the implicit range constraints defined by
assigning the datatype NonEmptyString
as range to
isbn
and title
, Integer
to
year
, and PositiveInteger
to
edition
. In our plain JavaScript approach, all these property
constraints are coded in the model class within property-specific
check functions.
The meaning of the design model can be illustrated by a sample data population respecting all constraints:
Table 4.1. Sample data for Book
ISBN | Title | Year | Edition |
---|---|---|---|
006251587X | Weaving the Web | 2000 | 3 |
0465026567 | Gödel, Escher, Bach | 1999 | 2 |
0465030793 | I Am A Strange Loop | 2008 |