Preface |
|
xv | |
Acknowledgments |
|
xix | |
|
|
|
|
3 | (22) |
|
|
4 | (2) |
|
|
4 | (1) |
|
|
5 | (1) |
|
|
6 | (2) |
|
Service-Oriented Architecture |
|
|
7 | (1) |
|
|
8 | (2) |
|
Database Hardware Architecture |
|
|
10 | (8) |
|
|
10 | (3) |
|
|
13 | (1) |
|
|
14 | (2) |
|
|
16 | (1) |
|
|
17 | (1) |
|
Other Factors in the Database Environment |
|
|
18 | (5) |
|
|
18 | (2) |
|
Government Regulations and Privacy |
|
|
20 | (1) |
|
|
21 | (2) |
|
|
23 | (2) |
|
Systems Analysis and Database Requirements |
|
|
25 | (20) |
|
Dealing with Resistance to Change |
|
|
26 | (1) |
|
The Structured Design Life Cycle |
|
|
27 | (1) |
|
Conducting the Needs Assessment |
|
|
28 | (4) |
|
|
32 | (2) |
|
|
34 | (1) |
|
Evaluating and Choosing an Alternative |
|
|
35 | (1) |
|
Creating Design Requirements |
|
|
36 | (1) |
|
Alternative Analysis Methods |
|
|
36 | (6) |
|
|
36 | (2) |
|
|
38 | (1) |
|
|
38 | (4) |
|
|
42 | (3) |
|
PART II DATABASE DESIGN THEORY |
|
|
|
|
45 | (6) |
|
Effects of Poor Database Design |
|
|
45 | (2) |
|
Unnecessary Duplicated Data and Data Consistency |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
50 | (1) |
|
Entities and Relationships |
|
|
51 | (34) |
|
Entities and Their Attributes |
|
|
51 | (10) |
|
|
53 | (1) |
|
Single-Valued versus Multivalued Attributes |
|
|
54 | (2) |
|
Avoiding Collections of Entities |
|
|
56 | (2) |
|
Documenting Entities and Their Attributes |
|
|
58 | (2) |
|
Entities and Attributes for Antique Opticals |
|
|
60 | (1) |
|
|
61 | (3) |
|
|
61 | (1) |
|
|
62 | (2) |
|
|
64 | (8) |
|
|
64 | (2) |
|
One-to-Many Relationships |
|
|
66 | (1) |
|
Many-to-Many Relationships |
|
|
67 | (1) |
|
Weak Entities and Mandatory Relationships |
|
|
67 | (1) |
|
Documenting Relationships |
|
|
68 | (3) |
|
Basic Relationships for Antique Opticals |
|
|
71 | (1) |
|
Dealing with Many-to-Many Relationships |
|
|
72 | (5) |
|
|
73 | (1) |
|
Documenting Composite Entities |
|
|
74 | (1) |
|
Resolving Antique Opticals' Many-to-Many Relationships |
|
|
75 | (2) |
|
Relationships and Business Rules |
|
|
77 | (1) |
|
Data Modeling versus Data Flow |
|
|
77 | (3) |
|
|
80 | (3) |
|
|
83 | (2) |
|
The Relational Data Model |
|
|
85 | (18) |
|
|
86 | (2) |
|
Columns and Column Characteristics |
|
|
86 | (1) |
|
Rows and Row Characteristics |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
88 | (5) |
|
Primary Keys to Identify People |
|
|
89 | (1) |
|
Avoiding Meaningful Identifiers |
|
|
90 | (1) |
|
Concatenated Primary Keys |
|
|
91 | (1) |
|
|
92 | (1) |
|
Representing Data Relationships |
|
|
93 | (3) |
|
|
95 | (1) |
|
Foreign Keys and Primary Keys in the Same Table |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (1) |
|
|
97 | (1) |
|
|
97 | (2) |
|
Sample Data Dictionary Tables |
|
|
98 | (1) |
|
|
99 | (2) |
|
|
101 | (2) |
|
|
103 | (24) |
|
Translating an ER Diagram into Relations |
|
|
103 | (2) |
|
|
105 | (1) |
|
|
106 | (5) |
|
Understanding Repeating Groups |
|
|
106 | (1) |
|
Handling Repeating Groups |
|
|
107 | (2) |
|
Problems with First Normal Form |
|
|
109 | (2) |
|
|
111 | (3) |
|
Understanding Functional Dependencies |
|
|
111 | (1) |
|
Using Functional Dependencies to Reach 2NF |
|
|
112 | (1) |
|
Problems with 2NF Relations |
|
|
113 | (1) |
|
|
114 | (2) |
|
|
114 | (2) |
|
|
116 | (1) |
|
|
117 | (2) |
|
|
118 | (1) |
|
|
119 | (6) |
|
|
120 | (2) |
|
|
122 | (3) |
|
|
125 | (1) |
|
|
126 | (1) |
|
Database Structure and Performance Tuning |
|
|
127 | (12) |
|
Joins and Database Performance |
|
|
128 | (4) |
|
|
132 | (2) |
|
Deciding Which Indexes to Create |
|
|
133 | (1) |
|
|
134 | (1) |
|
|
135 | (2) |
|
|
136 | (1) |
|
|
136 | (1) |
|
|
137 | (2) |
|
Codd's Rules for Relational Database Design |
|
|
139 | (12) |
|
Rule 1: The Information Rule |
|
|
140 | (1) |
|
Rule 2: The Guaranteed Access Rule |
|
|
141 | (1) |
|
Rule 3: Systematic Treatment of Null Values |
|
|
142 | (1) |
|
Rule 4: Dynamic Online Catalog Based on the Relational Model |
|
|
143 | (1) |
|
Rule 5: The Comprehensive Data Sublanguage Rule |
|
|
144 | (1) |
|
Rule 6: The View Updating Rule |
|
|
145 | (1) |
|
Rule 7: High-Level Insert, Update, Delete |
|
|
145 | (1) |
|
Rule 8: Physical Data Independence |
|
|
146 | (1) |
|
Rule 9: Logical Data Independence |
|
|
147 | (1) |
|
Rule 10: Integrity Independence |
|
|
147 | (1) |
|
Rule 11: Distribution Independence |
|
|
148 | (1) |
|
Rule 12: Nonsubversion Rule |
|
|
149 | (2) |
|
Using SQL to Implement a Relational Design |
|
|
151 | (30) |
|
Database Structure Hierarchy |
|
|
151 | (3) |
|
Naming and Identifying Structural Elements |
|
|
153 | (1) |
|
|
154 | (2) |
|
|
154 | (1) |
|
Identifying the Schema You Want to Use |
|
|
155 | (1) |
|
|
156 | (1) |
|
|
157 | (13) |
|
|
158 | (2) |
|
|
160 | (1) |
|
|
161 | (1) |
|
|
161 | (1) |
|
|
161 | (9) |
|
Additional Column Constraints |
|
|
170 | (1) |
|
|
170 | (3) |
|
Deciding Which Views to Create |
|
|
170 | (1) |
|
|
171 | (1) |
|
|
172 | (1) |
|
|
173 | (2) |
|
Creating Temporary Tables |
|
|
174 | (1) |
|
Loading Temporary Tables with Data |
|
|
174 | (1) |
|
Disposition of Temporary Table Rows |
|
|
174 | (1) |
|
|
175 | (1) |
|
Modifying Database Elements |
|
|
176 | (3) |
|
|
176 | (1) |
|
|
177 | (1) |
|
|
177 | (2) |
|
|
179 | (1) |
|
|
179 | (1) |
|
Deleting Database Elements |
|
|
179 | (2) |
|
Using CASE Tools for Database Design |
|
|
181 | (16) |
|
|
182 | (1) |
|
|
183 | (3) |
|
|
186 | (2) |
|
|
188 | (3) |
|
|
191 | (2) |
|
Sample Input and Output Designs |
|
|
193 | (2) |
|
|
195 | (1) |
|
|
196 | (1) |
|
Database Design Case Study 1: Mighty-Mite Motors |
|
|
197 | (34) |
|
|
197 | (18) |
|
Product Development Division |
|
|
199 | (1) |
|
|
200 | (1) |
|
Marketing and Sales Division |
|
|
201 | (1) |
|
Current Information Systems |
|
|
202 | (2) |
|
|
204 | (1) |
|
New Information Systems Division |
|
|
204 | (1) |
|
|
205 | (1) |
|
Current Business Processes |
|
|
206 | (9) |
|
|
215 | (16) |
|
|
215 | (3) |
|
|
218 | (5) |
|
|
223 | (2) |
|
|
225 | (6) |
|
Database Design Case Study 2: East Coast Aquarium |
|
|
231 | (44) |
|
|
231 | (23) |
|
|
233 | (3) |
|
The Volunteer Organization |
|
|
236 | (2) |
|
|
238 | (1) |
|
Creating the Application Prototype |
|
|
238 | (10) |
|
|
248 | (3) |
|
|
251 | (1) |
|
|
251 | (3) |
|
The Animal Tracking Database |
|
|
254 | (21) |
|
Highlights of the Application Prototype |
|
|
255 | (5) |
|
|
260 | (4) |
|
|
264 | (1) |
|
|
265 | (10) |
|
PART III RELATIONAL DESIGN PRACTICE |
|
|
|
Database Design Case Study 3: SmartMart |
|
|
275 | (24) |
|
The Merchandising Environment |
|
|
275 | (2) |
|
|
276 | (1) |
|
In-Store Sales Requirements |
|
|
276 | (1) |
|
|
276 | (1) |
|
|
277 | (1) |
|
|
277 | (7) |
|
Stores, Products, and Employees |
|
|
277 | (4) |
|
|
281 | (1) |
|
|
282 | (2) |
|
|
284 | (2) |
|
|
286 | (13) |
|
PART IV DATABASE IMPLEMENTATION ISSUES |
|
|
|
|
299 | (24) |
|
The Multiuser Environment |
|
|
299 | (5) |
|
|
300 | (1) |
|
|
300 | (3) |
|
|
303 | (1) |
|
Problems with Concurrent Use |
|
|
304 | (7) |
|
|
304 | (1) |
|
|
305 | (2) |
|
|
307 | (2) |
|
|
309 | (1) |
|
|
309 | (1) |
|
|
310 | (1) |
|
Solution 1: Classic Locking |
|
|
311 | (7) |
|
|
311 | (4) |
|
|
315 | (1) |
|
|
316 | (1) |
|
Locks and Transaction Length |
|
|
317 | (1) |
|
Solution 2: Optimistic Concurrency Control (Optimistic Locking) |
|
|
318 | (1) |
|
Solution #3: Multiversion Concurrency Control (Timestamping) |
|
|
318 | (1) |
|
Transaction Isolation Levels |
|
|
319 | (1) |
|
Web Database Concurrency Control Issues |
|
|
320 | (1) |
|
Distributed Database Issues |
|
|
321 | (1) |
|
|
322 | (1) |
|
|
323 | (28) |
|
Sources of External Security Threats |
|
|
324 | (3) |
|
|
324 | (1) |
|
|
325 | (1) |
|
|
326 | (1) |
|
Sources of Internal Threats |
|
|
327 | (2) |
|
|
327 | (2) |
|
|
329 | (9) |
|
Securing the Perimeter: Firewalls |
|
|
329 | (2) |
|
|
331 | (1) |
|
|
331 | (1) |
|
|
332 | (1) |
|
|
333 | (2) |
|
|
335 | (1) |
|
Combating Social Engineering |
|
|
336 | (2) |
|
Handling Other Employee Threats |
|
|
338 | (1) |
|
|
338 | (6) |
|
Internal Database User IDs and Passwords |
|
|
338 | (1) |
|
|
339 | (2) |
|
Granting and Revoking Access Rights |
|
|
341 | (2) |
|
|
343 | (1) |
|
|
344 | (4) |
|
|
345 | (2) |
|
|
347 | (1) |
|
The Bottom Line: How Much Security Do You Need? |
|
|
348 | (1) |
|
|
349 | (2) |
|
|
351 | (12) |
|
Scope and Purpose of a Data Warehouse |
|
|
352 | (2) |
|
Obtaining and Preparing the Data |
|
|
354 | (2) |
|
Data Modeling for the Data Warehouse |
|
|
356 | (2) |
|
Dimensional Modeling Basics |
|
|
356 | (2) |
|
|
358 | (1) |
|
Data Warehouse Appliances |
|
|
358 | (3) |
|
|
361 | (2) |
|
|
363 | (14) |
|
|
363 | (1) |
|
Recognizing and Handling Incomplete Data |
|
|
364 | (2) |
|
|
365 | (1) |
|
|
365 | (1) |
|
|
366 | (1) |
|
Recognizing and Handling Incorrect Data |
|
|
366 | (3) |
|
|
367 | (1) |
|
|
367 | (1) |
|
Wrong Data Entered into the Database |
|
|
368 | (1) |
|
Violation of Business Rules |
|
|
369 | (1) |
|
Recognizing and Handling Incomprehensible Data |
|
|
369 | (2) |
|
Multiple Values in a Column |
|
|
369 | (1) |
|
|
370 | (1) |
|
Recognizing and Handling Inconsistent Data |
|
|
371 | (3) |
|
Inconsistent Names and Addresses |
|
|
371 | (1) |
|
Inconsistent Business Rules |
|
|
371 | (1) |
|
|
372 | (1) |
|
Unenforced Referential Integrity |
|
|
373 | (1) |
|
Inconsistent Data Formatting |
|
|
373 | (1) |
|
Preventing Inconsistent Data on an Organizational Level |
|
|
373 | (1) |
|
Employees and Data Quality |
|
|
374 | (1) |
|
|
375 | (2) |
|
|
377 | (10) |
|
|
377 | (3) |
|
|
380 | (1) |
|
|
380 | (2) |
|
XML Support in Relational DBMSs |
|
|
382 | (3) |
|
|
382 | (2) |
|
|
384 | (1) |
|
|
385 | (2) |
Appendix Historical Antecedents |
|
387 | (20) |
Glossary |
|
407 | (6) |
Index |
|
413 | |