You are previewing Beginning Database Design: From Novice to Professional, Second Edition.
O'Reilly logo
Beginning Database Design: From Novice to Professional, Second Edition

Book Description

Beginning Database Design, Second Edition provides short, easy-to-read explanations of how to get database design right the first time. This book offers numerous examples to help you avoid the many pitfalls that entrap new and not-so-new database designers. Through the help of use cases and class diagrams modeled in the UML, you'll learn to discover and represent the details and scope of any design problem you choose to attack.

Database design is not an exact science. Many are surprised to find that problems with their databases are caused by poor design rather than by difficulties in using the database management software. Beginning Database Design, Second Edition helps you ask and answer important questions about your data so you can understand the problem you are trying to solve and create a pragmatic design capturing the essentials while leaving the door open for refinements and extension at a later stage. Solid database design principles and examples help demonstrate the consequences of simplifications and pragmatic decisions. The rationale is to try to keep a design simple, but allow room for development as situations change or resources permit.

  • Provides solid design principles by which to avoid pitfalls and support changing needs

  • Includes numerous examples of good and bad design decisions and their consequences

  • Shows a modern method for documenting design using the Unified Modeling Language

What you'll learn

  • Avoid the most common pitfalls in database design.

  • Create clear use cases from project requirements.

  • Design a data model to support the use cases.

  • Apply generalization and specialization appropriately.

  • Secure future flexibility through a normalized design.

  • Ensure integrity through relationships, keys, and constraints.

  • Successfully implement your data model as a relational schema.

Who this book is for

Beginning Database Design, Second Edition is aimed at desktop power users, developers, database administrators, and others who are charged with caring for data and storing it in ways that preserve its meaning and integrity. Desktop users will appreciate the coverage of Excel as a plausible "database" for research systems and lab environments. Developers and database designers will find insight from the clear discussions of design approaches and their pitfalls and benefits. All readers will benefit from learning a modern notation for documenting designs that is based upon the widely used and accepted Universal Modeling Language.

Table of Contents

  1. Title Page
  2. Dedication
  3. Contents at a Glance
  4. Contents
  5. Foreword
  6. About the Author
  7. About the Technical Reviewer
  8. Acknowledgments
  9. Introduction
  10. CHAPTER 1: What Can Go Wrong
    1. Mishandling Keywords and Categories
    2. Repeated Information
    3. Designing for a Single Report
    4. Summary
  11. CHAPTER 2: Guided Tour of the Development Process
    1. Initial Problem Statement
    2. Analysis and Simple Data Model
    3. Further Analysis: Revisiting the Use Cases
    4. Design
    5. Implementation
    6. Summary
  12. CHAPTER 3: Initial Requirements and Use Cases
    1. Real and Abstract Views of a Problem
    2. What Does the User Do?
    3. What Data Are Involved?
    4. What Is the Objective of the System?
    5. What Data are Required to Satisfy the Objective?
    6. What are the Input Use Cases?
    7. What Is the First Data Model?
    8. What Are the Output Use Cases?
    9. More About Use Cases
    10. Finding Out More About the Problem
    11. What Have We Postponed?
    12. Summary
  13. CHAPTER 4: Learning from the Data Model
    1. Review of Data Models
    2. Optionality: Should It Be 0 or 1?
    3. A Cardinality of 1: Might It Occasionally Be Two?
    4. A Cardinality of 1: What About Historical Data?
    5. A Many–Many: Are We Missing Anything?
    6. Summary
  14. CHAPTER 5: Developing a Data Model
    1. Attribute, Class, or Relationship?
    2. Two or More Relationships Between Classes
    3. Different Routes Between Classes
    4. Relationships Between Objects of the Same Class
    5. Relationships Involving More Than Two Classes
    6. Summary
  15. CHAPTER 6: Generalization and Specialization
    1. Classes or Objects with Much in Common
    2. Specialization
    3. Generalization
    4. Inheritance in Summary
    5. When Inheritance Is Not a Good Idea
    6. When Is Inheritance Worth Considering?
    7. Should the Superclass Have Objects?
    8. Objects That Belong to More Than One Subclass
    9. Composites and Aggregates
    10. It Isn’t Easy
    11. Summary
  16. CHAPTER 7: From Data Model to Relational Database Design
    1. Representing the Model
    2. Representing Classes and Attributes
    3. Primary Key
    4. Representing Relationships
    5. Summary
  17. CHAPTER 8: Normalization
    1. Update Anomalies
    2. Functional Dependencies
    3. Normal Forms
    4. Additional Considerations
    5. Summary
  18. CHAPTER 9: More on Keys and Constraints
    1. Choosing a Primary Key
    2. Unique Constraints
    3. Using Constraints Instead of Category Classes
    4. Deleting Referenced Records
    5. Summary
  19. CHAPTER 10: Query Basics
    1. Simple Queries on One Table
    2. Queries with Two or More Tables
    3. How Indexes Can Help
    5. Summary
  20. CHAPTER 11: User Interface
    1. Input Forms
    2. Reports
    3. Summary
  21. CHAPTER 12: Other Implementations
    1. Object–Oriented Implementation
    2. Implementing a Data Model in a Spreadsheet
    3. Implementing in XML
    4. Querying XML
    5. NoSQL
    6. Summary
  23. Index