Errata to
�Information Modeling and Relational Databases, Second
Edition
Halpin, T. and Morgan T. 2008
(Morgan Kaufmann)
Last updated: 2020 April 7
If
you spot any other errors in this second edition, please e-mail them to Terry
Halpin at [email protected].
The
following corrections should be made to the first
printing. To determine the print version of your copy of the book, look at the
row of digits below the copyright notice on the verso of the main title page:
the final digit denotes the print version (e.g. 1 = first printing, 2 = second
printing).
The
symbol �⇨� means �is replaced by�.
p. xxiv, Online Resources,
para. 1: Replace by: �To reduce the size and hence cost of the book,
supplementary material has been made available for downloading by accessing the
following link to the relevant Website: https://booksite.elsevier.com/9780123735683/?ISBN=9780123735683. There are five
appendices. Appendix A provides an overview of the evolution of computer
hardware and software. Appendix B discusses two kinds of subtype matrix that
can be used to determine subtype graphs from significant populations.
Appendices C, D and E discuss advanced aspects of SQL, focusing on
set-comparison queries, ranking and extrema queries, and implementing derivation
rules using triggers, generated columns, stored procedures, views, user defined
functions, and common table expressions.�.
p. 188, para. 1: Reword as
follows: �The external uniqueness constraint over three roles indicates that
each (genus, species, infraspecies) tuple refers to
at most one plant kind. The other external uniqueness constraint declares that
the (rank, infraname) pair identifies infraspecies. In the reference scheme for Plantkind, only the genus is mandatory. Moreover, outer
join semantics applies in this case (see Section 10.1), so for each genus there
is at most one plant kind with only a genus name, and for each genus-species
combination there is at most one plant kind with no infraspecies.
In a relational database, each plant kind maps to a sequence of four values,
three of which may be null, and each quadruple is unique (treating null just
like any other value).�
p. 190, Figure 5.30: change
�(.code� to �(.code)�.
p. 217, para. 2, replace
the third sentence onwards by: �By default, ranges are assumed to be closed, so
the end values are included. For example, {50..100}
includes 50 and 100 as well as the numbers in between. Inserting a left parenthesis �(�
before a start value excludes that value, and appending a right parenthesis �)� after an end value excludes that
value. If desired, a square bracket may be used to explicitly indicate
inclusion (the default). For example, �(0..100� and
�(0..100]� each denote a range of positive (above 0) numbers up to and
including 100. One may also combine enumerations and/or ranges into a single
constraint, as in Fig. 6.6(c).�.
p. 217, final sentence:
Append a period.
p. 218, before final
paragraph, insert new paragraph: �As a fine point, a value constraint displayed
next to an entity type with a reference mode is actually a role value
constraint on the referential role played by the value type. In the NORMA tool,
you can display it this way by toggling ExpandRefMode
to True.�.
p. 219, combine paragraph
starting with �Although choosing� with previous paragraph.
p. 219, 2nd last
para., replace by: �A cleaner approach is
to list all existing countries in a reference
table for Country. A country may appear in this table without playing any
elementary fact roles in the schema. Such a country is said to be independent, since it exists in our
model independently of doing anything. An independent entity type is a primitive entity type whose elementary fact roles (if any) are
collectively optional. An independent value type may contain some
values that play in no facts (elementary or existential). The term �independent�
is not used for subtypes. If an independent object type plays some fact roles,
the disjunction of these roles is not mandatory (implicitly or explicitly).�.
p.
253, para. 2, replace final sentence by: �Just based on age, we could specify
any set of natural numbers within the possible age range that included 13, 17,
and 19 but excluded 12 and 20 (e.g., {13, 17, 19, 1}, {13, 17, 19, 5, 63} and
so on).�.
p.
256, Fig. 6.53: �Period > 0� ⇨ �PeriodRate
> 0� (2 occurrences).
p.
260, Ex. 6.5, Q. 6, Planets table, NrMoons of Saturn:
�60� ⇨ �62�.
p.
271, Sec 7.1 Title: �Step 6� ⇨ �Step 7�.
p.
290, second para, first sentence: �four comparison operators <, �, >, �� ⇨
�six
comparison operators <, �,
>, �, =, ≠�.
p.
294, Ex. 7.4, Q. 8: �Question 4� ⇨ �Question 5�.
p. 380, para. 4: Replace by: �At any
rate, some restriction on aggregations is needed to stop cases like that shown
in Figure 9.45. If a person is part of a team, and a team is part of a club, it
doesn�t make sense to say that a club is part of a person. The example should
be remodeled, as shown in Figure 9.44(a).�.
p. 518, Replace 2nd
paragraph by: �Recall that a direct supertype of a subtype is connected
directly to the subtype (i.e., with no intermediate subtypes on the connecting
path). Each subtype has one or more direct supertypes. A connection between a
subtype and its direct supertype(s) is shown as a solid arrow if it provides a path to the preferred identifier of the
subtype. If a subtyping connection appears as a dashed arrow, the subtype either introduces its own preferred
reference scheme (this is called context-dependent
reference), or it obtains its identification scheme via a subtyping
connection to another supertype.�.
p. 519, para. 4, line 6:
�record� ⇨ �records�.
p. 519, Replace last
paragraph by: �In this example, we chose employeeNr
as the preferred identifier for student employees in the context of roles
specific to StudentEmployee. This choice is shown by
the solid subtyping arrow from StudentEmployee to
Employee (indicating a path to the subtype�s preferred identifier). The
subtyping connection from StudentEmployee to Student
is dashed, since this does not provide a path to the subtype�s identifier. The
subtype connections from Student and Employee are also dashed, because these
subtypes introduce new reference schemes in preference to that of their Person
supertype.�.
p. 606, para. 3: Replace by �The count
function may be used in two ways. Count ( * ) returns the number of rows in the
specified table, whereas count ( colname )
returns the number of values in the named column. If distinct is specified with a bag function, any
duplicates are excluded. If duplicates are wanted, the keyword all may be used; however, since this is
the default, it is often omitted. For obvious reasons, adding distinct to max or min has no effect.�
p. 742, para. 1:
Replace by: Codd�s original work on 2NF and 3NF classified attributes as
�prime� or �non-prime� depending on whether or not
they belong to some candidate key. We now use the terms �key attribute� and �nonkey attribute� for these concepts. So
a key attribute belongs to some key
(primary or alternate), and a nonkey attribute
belongs to no key.
p. 745, para. 1:
Replace the text by the following, and move this new version to become the
first paragraph on p. 742: The principle underlying the refinement to second and third
normal forms has been nicely summarized by Bill Kent (1983) as follows: �A nonkey field must provide a fact about the key, the whole
key, and nothing but the key�. This should be refined by replacing the final
occurrence of �the key� by �a key�.