Database Systems Principles
CSE132A Winter 2018
The main textbook (recommended but not required) will be:
- "Database Systems Concepts" by Silberschatz, Korth
and Sudarshan, 6th edition, McGraw-Hill.
A custom edition, containing just the material needed in this class (and 132B),
should be available at the bookstore.
Please check the book web site for slides, practice exercises, and other supplementary material.
Another recommended text:
- "Database Systems: the Complete Book" by
H. Garcia-Molina, J.Ullman and J. Widom, Prentice Hall.
Those interested in delving deeper into database theory might consult this book:
- "Foundations of Databases" by S.Abiteboul, R.Hull and
V.Vianu, Addison-Wesley, 1995.
Free online version
Lecture slides and other resources
Lectures will be podcast and available here
Gradiance is a distance learning system developed by Jeff Ullman at Stanford University,
that you will use to do practice homeworks and SQL labs.
You will need to sign up for a free student account. To do this, go here. Your user ID should allow us to identify you, so please use your UCSD student ID.
The first time you log in, you will be asked to enter a class token, which is 0E4D6AB6.
Please sign up immediately using the token.
All other information on using Gradiance
is found here.
Note that Gradiance is implemented using MySQL, and therefore does not support all features of the SQL standard.
This also means that some features of SQLite may not be available in Gradiance.
This document describes some of the differences between Gradiance and
the SQL standard.
We will be using Piazza for class discussion. Other announcements, homeworks, assignments, etc, will continue to be posted
on this class web page (not Piazza). Piazza is geared to getting you help fast and efficiently from classmates, the TA, tutors, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.
Find our Piazza class page here and go to Q&A to post or answer questions.
Please register now.
SQLite provides a self-contained, light-weight command line SQL that you can easily install and run on your laptop.
While the features supported are limited, this is an easy, fun way to become familiar with SQL and practice SQL queries.
To install, go to the SQLite download page. Find the precompiled
binaries for Windows, Mac OS or Linux and download the .zip file for the command-line shell. Extract the sqlite3.exe anywhere you like.
Clicking it will start the command line shell. To run SQL commands, you can either type them in, paste them from a file, or execute
a file as a script. For example, this script sets up a simple Movie database. To run SQLite on it, save it in the same
place as sqlite3.exe and type .read movies.sql in the SQLite command line. You are now ready to query the Movie database!
You can find documentation on the command line shell for SQLite.
Caution: SQLite command shell does not remember anything between sessions, unless provided with a database (file ending with .db) as a parameter. For example, the command "sqlite3.exe sample.db" will save the schema and data in the database sample.db.
In Windows, use the .backup command to save the database (whose default name is "main") to a file,
and the .restore command to retrieve it from the file at the next session.
Your scores will be recorded on Gradesource.
You will receive a secret number that enables you to access your scores.
We will use Gradescope to grade some of the assignments.
You should already have an account set up. To login, use your ucsd email. If you do not have an account,
please create one using the class code 9P587X. Here are instructions
on preparing and submitting assignments to Gradescope. If you prefer, a video explaining how to submit assignments can also be found here (see "For students: submitting homework")
Please register your clicker on TritonEd
Readings will be updated as we go along.
All readings are from the main recommended text, except as noted.
- Introduction: Chapter 1
- The relational model: Chapter 2
- SQL: Chapter 3
- Relational calculus: Sections 6.2, 6.3
- Relational algebra: Section 6.1
- QBE: Appendix C.1
- Schema design: Chapter 8
- Transactions and concurrency control: Chapter 14, Section 15.1