Errata and Clarifications for ``Database Management Systems, Second Edition,
First and Second Printing''
The second edition was available from 1999-2002.
Here is the
material for the third edition.
Last update: August 27, 2000
Chapter 1 (Introduction to Database Systems)
- Page 10, first paragraph, last line: "actally" should be
"actually"
- Page 21, last "Points to Review", line 3: replace "concurently"
with "concurrently"
Chapter 3 (The Relational Model)
- The comma (,) at the end of the line of FOREIGN KEY in SQL on page 64, 72,
74, page 77 (two occurrences), and page 78 should be dropped. The comma (,)
at the end of the line of ON DELETE in the SQL construct on page 64 should
be dropped.
- Page 78, the definition of the view: "CREATE VIEW ... login ..."
should be "CREATE VIEW ... sid ...". The second sentence in the
first paragraph of 3.6 should be changed to: "Suppose that we are often
interested in finding the names and student identifiers of students who got
a grade of B in some course, together with the cid for the course."
- Page 83, third line from the bottom: "are computed" should be
"is computed"
Chapter 4 (Relational Algebra and Calculus)
- Page 103, third paragraph below Q3: Replace ".. a green boat and a
red boat" with "On instances B1, R2, and S3, the query will return
the colors green and red.". (Lubber has actually reserved two red
boats.)
- Page 111, Q9: The tuple relational calculus expression for Q9 is unsafe if
"Boats" is empty. A corrected version of the query is the
following expression: { P | there exists S in Sailors (P.sname = S.sname and
for all R in Reserves (S.sid = R.sid and R.bid = B.bid)) }
- Page 117, Exercise 4.5: You need the additional information that an
employee can pilot a flight if she is certified on some aircraft with a
cruisingrange larger than the distance of the flight. (One possible
variation is: An employee can pilot a flight if she is certified on all
aircrafts with a cruisingrange larger than the distance of the flight.)
Chapter 5 (SQL: Queries, Programming, Triggers)
- Page 122: In Figure 5.1, showing Instance S3, the age for sailor
"Horatio" with sid=74 should be 35.0 instead of 40.0. The same
holds for Instance S3 of Sailors shown in Figure 5.10 on page 142.
- Page 143: In Figures 5.11 and 5.12, the age for the record with rating=9
should be 35.0.
- Page 144, Figure 5.14: The correct avgage for rating 3 is
"44.5".
- Page 145, (Q36): The predicate in the nested query should read "...
AND S2.age >= 18). This should also be corrected in the second line from
the bottom (replace "age >18" with "age >= 18")
- Page 168, 5.13.3, second paragraph: Delete first "and".
- Page 171, Exercise 5.3: You need the same additional information as
in Exercise 4.5, page 117.
Chapter 7 (Storing Data: Disks and Files)
- Page 199, inside box, line 4: ".. from one tack to the
next" should be ".. from one track to the next"
- Page 201, first paragraph (below box), last sentence: " .. is
written onto disk i mod k" should be ".. is written onto disk i
mod D"
- Page 209, page requesting algorithm: The pin_count needs also to be
incremented if the page is already in the buffer pool.
Chapter 12 (Evaluation of Relational Operators)
- Page 324, paragraph 2, line 4: "B+ index" should be "B+
tree index"
- Page 337, paragraph 3, line 2: "blocked nested loops" should be
"block nested loops"
- Page 346, last paragraph: The sizes of R and S are exchanged; R should
have 1000 pages, and S should have 500 pages.
Chapter 14 (A Typical Relational Query Optimizer)
- Page 376, Figure 14.1 and 14.2: In the HAVING clauses "COUNT(*) >
2" should be "COUNT(*) > 1"
- Page 382, Figure 14.4: In the equiwidth histogram, the count of the first
bucket should be 8 instead of 10. In the equidepth histogram, the values of
the first bucket should be 2.25 instead of 2.22.
- Page 404, first bullet of the summary: Replace "Current query
optimizers do handle nested subqueries well." by "Current query
optimizers do not handle nested subqueries well."
Chapter 19 (Concurrency Control)
- Page 553, second paragraph, line 6: ".. and the insertion of
45*" should be ".. and the insertion of 25*"
Chapter 20 (Crash Recovery)
- Page 581, second paragraph : Should read: LSN of the
"second" update log record shown in Figure 20.3
- Page 588, third paragraph, line 6: "Rndo" should be
"Undo"
Chapter 22 (Internet Databases)
- Page 653, paragraph on "entity references". The mutant semicolon
among the reserved characters should be a ".
- Page 654, Figure 22.6, second line: Replace "emp.dtd" with
"books.dtd"
- Page 659, code fragment after the second line: "..x2 - 4x ... "
should be " ... x^2 - 4x ... "
Chapter 23 (Decision Support)
- Page 692, third paragraph, line 5: delete "langle"
- Page 700: Line 4: Missing word after "and it IS desirable"
Chapter 24 (Data Mining)
- Page 708, third paragraph: Replace ".. can roughly be separated into
five steps" by ".. can roughly be separated into four steps."
- Page 709, third record in Figure 22.4: The date should be 5/1/99
- Page 709, the sentence starting in line 6: The sentence should be changed
as follows: "It can be decomposed by storing transid-custid-date
triples separately and dropping custid; this may be how the data is
actually stored."
- Page 712, first line: ``...purchased the item at least twice.'' should be:
``...purchased the item more than five times.'' to make this sentence
consistent with the SQL query.
- Page 714, paragraph "Confidence": The expression sup(LHS)/sup(LHS
Union RHS) is incorrect. This should be inverted so it should read sup(LHS U
RHS)/sup(LHS).
- Page 714, paragraph "Confidence", line 7: "if" should
be "of"
- Page 716, line 4/5: The rule should be "{pen} => {milk}".
- Page 716, Figures 24.4 and 24.5: The dates are incorrect. The correct
dates are given in Figure 24.1
- Page 717, line 4: Replace rule "{pen} => {ink}" with
"{pen} => {milk}"
- Page 725, last SQL query for AVC-set (extends onto page 726): Change the
query to:
SELECT R.cartype, R.highrisk, COUNT(*)
FROM InsuranceInfo R
WHERE R.age <= 25
GROUP BY R.cartype, R.highrisk
- Page 727, formulas for C and R: The formula for C is missing a division by
"n", and in the formula for R, "M" needs to be replaced
by "C".
Reported errors in the exercises are corrected directly in the solutions
manual, which is distributed via ftp.
ACKNOWLEDGEMENTS
Thanks to the following bug-spotters:
Georgios Evangelidis at the University of Macedonia, Thessaloniki, Greece (gevan@uom.gr)
Dimitris A. Dervos at the Technological Educational Institution of Thessaloniki (dad@computer.org)
Stefan Saroiu at the University of Washington-Seattle (tzoompy@cs.washington.edu)
Paula Hawthorn while teaching at UC Berkeley (pbhawthorn@mindspring.com)
Raoul Bhoedjang at Cornell University (raoul@cs.cornell.edu)
Alvin Tanhehco at Cornell University (act7@cornell.edu)
Eric Milkie at Cornell University (eam23@cornell.edu)
Scott Vandenberg at Siena College (vandenberg@siena.edu)
Vincent Oria at New Jersey Institute of Technology (oria@cis.njit.edu)
Masatoshi Yoshikawa at the Nara Institute of Science and Technology (yosikawa@is.aist-nara.ac.jp)
Jignesh Patel at the University of Michigan (jignesh@cs.umich.edu)
Alexander Thomasian at the University of Connecticut (athomas@uconnvm.uconn.edu)
Frederick N. Springsteel at the University of Missouri - Columbia (csfreds@cecs.missouri.edu)
Ji Zhou at the University of Memphis (zhouji@memphis.edu)
James J. Gallagher at the University of Connecticut (scooter@ieee.org)
Panagiotis Ipeirotis at Columbia University (pirot@cs.columbia.edu)
Adnan Mian (adnan.mian@wcom.com)
Philip E. Varner at the University of Virginia (pev5b@cs.virginia.edu)
Ka Wong Chong at the University of Hong Kong (kwchong@csis.hku.hk)
Abdullah Uz Tansel at the City University of New York (tansel@baruch.cuny.edu)
Howard Hua Yang at Oregon Graduate Institute (hyang@cse.ogi.edu)
Raghu Ramakrishnan (raghu@cs.wisc.edu)
and Johannes Gehrke (johannes@cs.cornell.edu).
|