Preamble

How to Use This Guide

These lecture notes are written in an elusive style: they are a support for the explanations that will be made at the board. They are not designed to be self-contained: they are rather a list of topics and reminders, along with handy examples, code and drawings. Reading them before coming to the lecture will help you getting a sense of the next topic we will be discussing, but you may sometimes have trouble deciphering their … unique style.

When it comes to code, you can normally copy-and-paste it from the document and use it as it is. Or, you can browse the source code of the code snippets at rocketgit to download it directly. Some portion of code starts with a path in comment, like so:

/* code/sql/HW_HelloWorld.sql */
SELECT "Hello World!";

This means that this code can be found at rocketgit.

The SQL code frequently starts with

DROP SCHEMA IF EXISTS HW_NAME_OF_SCHEMA;
CREATE SCHEMA HW_NAME_OF_SCHEMA;
USE HW_NAME_OF_SCHEMA;

This parts starts by deleting the schema HW_NAME_OF_SCHEMA if it exists, then create and use it: it allows the code to run independently of your installation. It needs to be used with care, though, since it would delete everything you have in the HW_NAME_OF_SCHEMA schema before re-creating it, but empty.

Finally, the comments -- start snippet something and -- end snippet something can be ignored, as their are an artifice from pandoc-include-code to select which portion of the code to display.

To clone this source of those notes and have a local copy of it, please refer to the instructions at README. Instructions on how to compile those notes and how to contribute are linked from this document.

On top of the notes, you will find in this document:

Any feedback is greatly appreciated. Please refer to README for how to contribute to those notes.

The syllabus is at my website, and the webpage for this notes is at the notes page. Please, refer to those notes using this entry (Aubert 2019):

@report{AubertCSCI3410-DatabaseSystems,
author={Aubert, Clément},
title={CSCI 3410 - Database Systems},
url={http://spots.augusta.edu/caubert/db/ln/},
urldate={2019-11-03},
year={2019},
institution={{School of Computer and Cyber Sciences, Augusta University}},
location={Augusta, Georgia, USA},
langid={en},
type={Lecture notes}
 }

Planned Schedule

A typical (meeting twice a week, ±17 weeks, ±30 classes) semester is divided as follows:

Exams Yearbooks

To give you a sense of what you will be asked during the exams, or simply to practise, please find below the exams given previous semesters, in reverse chronological order. The quizzes are not indicated, but were generally a mix of up to five exercises and one problem from the relevant chapter(s).

Spring 2020

Due to the Covid-19 pandemic, only one exam took place, and the final exam was taken remotely on D2L. A second project, more ambitious, was also asked from the students, and accounted for a large portion of their grade.

Fall 2019

Spring 2019

Spring 2018

Fall 2017

Typesetting and Acknowledgments

The source code for those notes is hosted at rocketgit, typeset in markdown, and then compiled using pandoc and multiple filters (pandoc-numbering, pandoc-citeproc, pandoc-include-code). The drawings use various LaTeX packages, including PGF, TikZ, tikz-er2, pgf-umlcd and tikz-dependency. The help from the TeX - LaTeX Stack Exchange community greatly improved this document. The underline text is obtained using YayText, the unicode symbols are searched in the “Unicode characters and corresponding LaTeX math mode commands”. Finally, the pdf version of the document uses Linux Libertine fonts, the html version uses Futura.

For technical reasons, underlined words cannot be searched in the document.

These lecture notes were created under an Affordable Learning Georgia Mini-Grant for Ancillary Materials Creation and Revision (Proposal M71).

ALG logo

Resources

You can find at the end of this document the list of references, and some particular resources listed at the beginning of each chapter. Let me introduce some of them:

Those resources are listed as complements, but it is not require to read them to understand the content of those notes. (Watt and Eng 2014)—being available free of charge—is more descriptive than the current notes, and as such can constitutes a great complement. Unfortunately, it lacks some technical aspects, and the database program aspect is not discussed in detail.

This work is under Creative Commons Attribution 4.0 International License or later.

Some figures and resources are borrowed from other sources, in which case it is indicated clearly.