Database Design and Implementation

  • ID: 2326427
  • Book
  • 784 Pages
  • John Wiley and Sons Ltd
1 of 4
A software developer’s hands–on guide to database systems

Combining an eminently readable style with a practical approach, Edward Sciore’s Database Design and Implementation introduces you to database systems from a software developer’s perspective. In its pages, you will learn how to use a database and how to develop one of your own.

Organized according to the components of a database, Database Design and Implementation takes you through database systems concepts from low–level disk access all the way to the query planner. Presenting only the essential algorithms and techniques that most clearly illustrate the issues discussed, the book covers such topics as data design and manipulation; integrity and security; memory and record management; metadata; query processing and optimization; integrity and security; indexing, and more.

As you proceed through the chapters and numerous exercises, you’ll learn:

- How to build database applications in Java
- JDBC, JPA, XML, and Servlet development
- The internals of a database server
- Sophisticated techniques for indexing, sorting, intelligent buffer usage, and query optimization

Best of all, this book includes a simple but fully functional database system, SimpleDB, that enables you to apply your conceptual knowledge by examining and modifying the code.  With numerous hands–on exercises and such tools as SimpleDB, Database Design and Implementation will give the self–studier as well as the traditional student an ideal introduction to the world of database systems.
Note: Product cover images may vary from those shown
2 of 4
1. Introduction: Why a Database System?

1.1. Databases and Database Systems.

1.2. Record Storage.

1.3. Multi–User Access.

1.4. Memory Management.

1.5. Data Models and Schemas.

1.6. Physical Data Independence.

1.7. Logical Data Independence.

1.8. Chapter Summary.

1.9. Suggested Reading.

1.10. Exercises.

Part 1: Rational Databases.

2. Data Definition.

2.1. Tables.

2.2. Null Values.

2.3. Keys.

2.4. Foreign Keys and Referential Integrity.

2.5. Integrity Constraints.

2.6. Specifying Tables in SQL.

2.7. Chapter Summary.

2.8. Suggested Reading.

2.9. Exercises.

3. Data Design.

3.1. Designing Tables is Difficult.

3.2. Class Diagrams.

3.3. Transforming Class Diagrams to Tables.

3.4. The Design Process.

3.5. Relationships to Constraints.

3.6. Functional Dependancies and Normalization.

3.7. Chapter Summary.

3.8. Suggested Reading.

3.9. Exercises.

4. Data Manipulation.

4.1. Queries.

4.2. Relational Algebra.

4.3. SQL Queries.

4.4. SQL Updates.

4.5. Views.

4.6. Chapter Summary.

4.7. Suggested Reading.

4.8. Exercises.

5. Integrity and Security.

5.1. The Need for Integrity and Security.

5.2. Assertions.

5.3. Triggers.

5.4. Authorization.

5.5. Mandatory Access Control.

5.6. Chapter Summary.

5.7. Suggested Reading.

5.8. Exercises.

6. Improving Query Efficiency.

6.1. The Virtues of Controlled Redundancy.

6.2. Materialized Views.

6.3. Indexes.

6.4. Chapter Summary.

6.5. Suggested Reading.

6.6. Exercises.

Part 2: Client–Server Database Systems.

7. Clients and Servers.

7.1. The Data–Sharing Problem.

7.2. Database Clients and Servers.

7.3. The Derby and SimpleDB Database Servers.

7.4. Running Database Clients.

7.5. The Derby ij Client.

7.6. The SimpleDB Version of SQL.

7.7. Chapter Summary.

7.8. Suggested Reading.

7.9. Exercises.

8. Using JDBC.

8.1. Basic JDBC.

8.2. Advanced JDBC.

8.3. Computing in Java vs. SQL.

8.4. Chapter Summary.

8.5. Suggested Reading.

8.6. Exercises.

9. Persistent Java Objects.

9.1. The Domain Model and View of a Client Program.

9.2. The Problem with Our Domain Model.

9.3. The Java Persistence Architecture.

9.4. The Java Persistence Query Language.

9.5. Downloading a JPA Implementation.

9.6. Chapter Summary.

9.7. Suggested Reading.

9.8. Exercises.

10. Data Exchange.

10.1. Sharing Database Data with NonUsers.

10.2. Saving Data in an XML Document.

10.3. Restructuring an XML Document.

10.4. Generating XML Data from the Database.

10.5. Chapter Summary.

10.6. Suggested Reading.

10.7. Exercises.

11. Webserver–Based Database Clients.

11.1. Types of Database Clients.

11.2. Interacting with a Web Server.

11.3. Basic Servlet Programming.

11.4. Managing Database Connections.

11.5. Configuring a Servlet Container.

11.6. Chapter Summary.

11.7. Suggested Reading.

11.8. Exercises.

Part 3. Inside the Database Server.

12. Disk and File Management.

12.1. Persistent Data Storage.

12.2. The Block–Level Interface to the Disk.

12.3. The File–Level Interface to the Disk.

12.4. The Database System and the OS.

12.5. The SimpleDB File Manager.

12.6. Chapter Summary.

12.7. Suggested Reading.

12.8. Exercises.

13. Memory Management.

13.1. Two Principles of Database Memory Management.

13.2. Managing Log Information.

13.3. The SimpleDB Log Manager.

13.4. Managing User Data.

13.5. The SimpleDB Buffer Manager.

13.6. Chapter Summary.

13.7. Suggested Reading.

13.8. Exercises.

14. Transaction Management.

14.1. Transactions.

14.2. Using Transactions in SimpleDB.

14.3. Recovery Management.

14.4. Concurrency Management.

14.5. Implementing SimpleDB Transactions.

14.6. Testing Transactions.

14.7. Chapter Summary.

14.8. Suggested Reading.

14.9. Exercises.

15. Record Management.

15.1. The Record Manager.

15.2. Implementing a File of Records.

15.3. The SimpleDB Record Manager.

15.4. Chapter Summary.

15.5. Suggested Reading.

15.6. Exercises.

16. Metadata Management.

16.1. The Metadata Manager.

16.2. Table Metadata.

16.3. View Metadata.

16.4. Statistical Metadata.

16.5. Index Metadata.

16.6. Implementing the Metadata Manager.

16.7 .Chapter Summary.

16.8. Suggested Reading.

16.9. Exercises.

17. Query Processing.

17.1. Scans.

17.2. Update Scans.

17.3. Implementing Scans.

17.4. Pipelined Query Processing.

17.5. The Cost of a Scan.

17.6. Plans.

17.7. Predicates.

17.8. Chapter Summary.

17.9. Suggested Reading.

17.10. Exercises.

18. Parsing.

18.1. Syntax vs. Semantics.

18.2. Lexical Analysis.

18.3. Implementing the Lexical Analyzer.

18.4. Grammars.

18.5. Recursive–Descent Parsers.

18.6. Adding Actions to the Parser.

18.7. Chapter Summary.

18.8. Suggested Reading.

18.9. Exercises.

19. Planning.

19.1. The SimpleDB Planner.

19.2. Verification.

19.3. Query Planning.

19.4. Update Planning.

19.5. Implementing the SimpleDB Planner.

19.6. Chapter Summary.

19.7. Suggested Reading.

19.8. Exercises.

20. The Database Server.

20.1. Server Databases vs. Embedded Databases.

20.2. Client–Server Communication.

20.3. Implementing the Remote Interfaces.

20.4. Implementing the JDBC Interfaces.

20.5. Chapter Summary.

20.6. Suggested Reading.

20.7. Exercises.

Part 4: Efficient Query Processing.

21. Indexing.

21.1. The Index Interface.

21.2. Static Hash Indexes.

21.3. Extendable Hash Indexes.

21.4. B–Tree Indexes.

21.5. Index–Aware Operator Implementations.

21.6. Index Update Planning.

21.7. Chapter Summary.

21.8. Suggested Reading.

21.9. Exercises.

22. Materialization and Sorting.

22.1. The Value of Materialization.

22.2. Temporary Tables.

22.3. Materialization.

22.4. Sorting.

22.5. Grouping and Aggregation.

22.6. Merge Joins.

22.7. Chapter Summary.

22.8. Suggested Reading.

22.9. Exercises.

23. Effective Buffer Utilization.

23.1. Buffer Usage in Query Plans.

23.2. MultiBuffer Sorting.

23.3. MultiBuffer Product.

23.4. Implementing the Multibuffer Operations.

23.5. Hash Joins.

23.6. Comparing the Join Algorithms.

23.7. Chapter Summary.

23.8. Suggested Reading.

23.9. Exercises.

24. Query Optimization.

24.1. Equivalent Query Trees.

24.2. The Need for Query Optimization.

24.3. The Structure of a Query Optimizer.

24.4. Finding the Most Promising Query Tree.

24.5. Finding the Most Efficient Plan.

24.6. Combining the Two Stages of Optimization.

24.7. Merging Query Blocks.

24.8 Chapter Summary.

24.9. Suggested Reading.

24.10. Exercises.

References.

Index.

Note: Product cover images may vary from those shown
3 of 4

Loading
LOADING...

4 of 4
Edward Sciore is an Associate Professor in the Computer Science Department at Boston College. He received his Ph.D. from Princeton University in 1980, and has been studying and teaching about database systems ever since. He is the author of numerous research articles about database systems. His favorite activity, however, is to teach database courses to college students. These teaching experiences, accumulated over a 25–year period, are what led to the writing of this book.
Note: Product cover images may vary from those shown
5 of 4
Note: Product cover images may vary from those shown
Adroll
adroll