Before you keep reading...
Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.
Before you keep reading...
Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.
In God we trust, all others bring data.
—attributed to W. Edwards Deming
This book, A Practical Introduction to Databases, was created to fill the need for a low-cost, up-to-date textbook suitable for an introductory course on databases:
The book is free to students and instructors (although we encourage you to support the Runestone Academy platform to help ensure its future sustainability and growth).
The book is open. 1 Its contents are licensed under the Creative Commons Attribution-ShareAlike 4.0 International License, meaning that anyone is free to share, adapt, and redistribute them for any purpose whatsoever, as long as appropriate credit is given and the license terms persist. The source for this book is available on github; you may fork, extend, and re-release this book in any form you wish (pull requests welcome!). This book is intended as a living document, to be updated and expanded regularly as technology changes, by any interested author.
The book is oriented to students encountering databases for the first time, with a focus on key skills needed by future software engineers.
In this first release, the book covers three core topics: SQL, data modeling, and relational database theory. 2 In determining which material to include or exclude, choices were made to prefer material with high impact and practical application over exhaustive coverage. Instructors may therefore wish to use this book as a foundation, supplemented with additional material as required for their course. Instructors of more advanced courses in databases may also find value in providing this book as a supplement for students encountering the subject for the first time. To the extent possible, the content is presented in a way that allows different orderings of topics, although some dependencies are unavoidable.
In keeping with the applied focus of the book, SQL is offered as the starting point in Part 1 of the text. At a time when academia and industry alike are developing new advances in database technology seemingly on a daily basis, the relational database model as mediated by SQL remains the gravitational center for practitioners. SQL is the common point of reference used to evaluate job applicants on their database skills. The online book uses an embedded SQLite database engine to provide interactive examples and facilitate exploration (scripts are provided in Appendix A to create the textbook’s database on several other major database systems, if preferred).
Part 2 discusses data modeling. Here, the emphasis is on database design using entity-relationship diagrams (ERDs) and related tools. The coverage includes a detailed example demonstrating ERD construction along with step-by-step instructions for converting ERDs to a relational database schema.
Finally, Part 3 of the text provides coverage of relational database theory, including relational algebra and normalization (through fourth normal form).
This book is an Open Education Resource (OER), and is aligned with the goals laid out in the UNESCO Recommendation on Open Educational Resources, among others.
Future releases are planned, covering software programming with databases, NoSQL, and other topics of practical interest.