List of commits:
Subject Hash Author Date (UTC)
Edited the preamble. 364e709107602e163ea9365f25ccf1f5a6bb1914 caubert 2021-01-11 16:00:07
Started to edit notes and add final exam from fall 2020. bb747e27ce08ce17e91913e947614e3057580995 caubert 2021-01-06 22:26:07
Integrated the include-link feature of pandoc-include-code. 3a8f9ededdaa1f05d526742f5d447aaa017e1d1b caubert 2021-01-04 22:52:18
Fixed citeproc. 0d90c7e60e4a4474fd7ded03bb6526ea63a57253 aubert@math.cnrs.fr 2020-12-27 21:33:48
(Finally) updated pandoc and pandoc-numbering. 127c1964a0732b49e14b46fdb0d3f8446e3892d0 aubert@math.cnrs.fr 2020-12-27 21:14:31
Fixed url in comments, avoid them being wrapped. 09a6a78479f24b5749605a4cb7136f8cfbf57d30 aubert@math.cnrs.fr 2020-12-18 18:55:50
Added comments on procedures from code f3e9c2abac41d5de1c7473867c4f688051dec928 aubert@math.cnrs.fr 2020-12-01 15:46:53
Updated mysql connector 228d86db5498aae94a4d162272fa03a84ae9c532 aubert@math.cnrs.fr 2020-12-01 15:09:46
Updated java beautifier 30f4a79f2d911cd0b6a24c31f968f0d23620965f aubert@math.cnrs.fr 2020-12-01 15:07:50
Worked on procedure example from java 998ea14119a5a3f88efc4b0a126177e85151e43d aubert@math.cnrs.fr 2020-12-01 15:06:47
Brief example of calling a procedure from a program. 1054c9d5c83fb956bdd0b8d884d5ce2c8a9a640e aubert@math.cnrs.fr 2020-11-30 19:00:45
Added solution to second exam d8f62ded96991885a96d561db587988d453a28c8 aubert@math.cnrs.fr 2020-11-05 20:35:50
Quick fix on testing semicolons. 7f48d88d2ed69213d803a7736df3d50330cfecd1 aubert@math.cnrs.fr 2020-11-03 14:14:06
Added simple example to test if semicolon are important in SQL querries. 98097fb11558c08bad630fb3351f99ceb6777de7 aubert@math.cnrs.fr 2020-11-03 14:11:22
Updated spots to https. a8daf1768395aa296bf0dd05783dd53c757d5d19 aubert@math.cnrs.fr 2020-10-05 16:18:44
Adding quiz #2 98e0ae5b8ce766524f60c91adb1040235e1bbf31 aubert@math.cnrs.fr 2020-10-02 19:00:15
Added exam 1 e2f62ae4bf26fcc4b86e8665060ccf3918e7abeb aubert@math.cnrs.fr 2020-09-24 12:51:36
worked on solution to first exam. b13ad99dd895f124df1b642fd990071fc09db294 aubert@math.cnrs.fr 2020-09-23 17:44:01
Added solution to first problem. 0948cee47ed78dc115fd69c7bcf96a312dd3162f aubert@math.cnrs.fr 2020-09-18 21:43:00
Added solution to problem 2 of Exam #1. 7ad20b3c0025a4de3fa00729de570c6fe9176773 aubert@math.cnrs.fr 2020-09-18 21:34:19
Commit 364e709107602e163ea9365f25ccf1f5a6bb1914 - Edited the preamble.
Author: caubert
Author date (UTC): 2021-01-11 16:00
Committer name: caubert
Committer date (UTC): 2021-01-11 16:00
Parent(s): bb747e27ce08ce17e91913e947614e3057580995
Signer:
Signing key:
Signing status: N
Tree: 529fce6ce26f80ac501e51f5ae42e416c0be93ee
File Lines added Lines deleted
CONTRIB.md 3 0
README.md 3 0
notes/latex/packages.sty 3 1
notes/lectures_notes.md 69 28
File CONTRIB.md changed (mode: 100644) (index 7a3883b..ee75155)
2 2 title: Contributing to the Database Systems Lecture Notes title: Contributing to the Database Systems Lecture Notes
3 3 --- ---
4 4
5 Please refer to <https://spots.augusta.edu/caubert/db/ln/README.html#authors-and-contributors> for a detail of the past contributions.
6 This document focuses on explaining how to contribute to those notes.
7
5 8 # Contributing # Contributing
6 9
7 10 We are really glad you are reading this, because we need students, volunteers and contributors (at all level!) to improve this project. We are really glad you are reading this, because we need students, volunteers and contributors (at all level!) to improve this project.
File README.md changed (mode: 100644) (index a7e490e..714cb37)
... ... Those notes would not have been without the constant support, curiosity, and rem
75 75 Crystal was supported by an [Affordable Learning Georgia](https://www.affordablelearninggeorgia.org/) "Mini-Grant for Ancillary Materials Creation and Revision" ([Proposal M71](https://www.affordablelearninggeorgia.org/documents/M71_Augusta_Aubert.pdf)). Crystal was supported by an [Affordable Learning Georgia](https://www.affordablelearninggeorgia.org/) "Mini-Grant for Ancillary Materials Creation and Revision" ([Proposal M71](https://www.affordablelearninggeorgia.org/documents/M71_Augusta_Aubert.pdf)).
76 76 Bobby, Minh and Poonam benefited from the support and guidance of Dr. Onyeka Ezenwoye in the CSCI 4712 - Senior Capstone Project class. Bobby, Minh and Poonam benefited from the support and guidance of Dr. Onyeka Ezenwoye in the CSCI 4712 - Senior Capstone Project class.
77 77
78 Additionally, Daniel Gozan, Mark Holcomb, Assya Sellak, Sydney Strong and Patrick Woolard helped [smash some bugs](https://spots.augusta.edu/caubert/projects/Capstone_Final_Document.pdf) in the tools used to produce this document, under the guidance and support of Dr. Dariusz Kowalski in the CSCI 4712 - Senior Capstone Project class.
79
80
78 81
79 82 # License # License
80 83
File notes/latex/packages.sty changed (mode: 100644) (index ebf9f86..691917a)
35 35 } }
36 36 } }
37 37
38 \setlength{\cftproblemnumwidth}{2.6em} % Tweaking the space between problems' number and title in the TOC generated by pandoc-numbering thanks to tocloft.
38 \AtBeginDocument{
39 \setlength{\cftproblemnumwidth}{2.6em} % Tweaking the space between problems' number and title in the TOC generated by pandoc-numbering thanks to tocloft.
40 }
File notes/lectures_notes.md changed (mode: 100644) (index ee49d1c..327de2e)
... ... base: https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/blo
37 37
38 38 ## How to Use This Guide {-} ## How to Use This Guide {-}
39 39
40 ### How to Read This Guide {-}
41
40 42 These lecture notes are written in an elusive style: they are a support for the explanations that will be made at the board. These lecture notes are written in an elusive style: they are a support for the explanations that will be made at the board.
41 43 <!-- They are not designed to be self-contained: they are rather a list of topics and reminders, along with handy examples, code and drawings. --> <!-- They are not designed to be self-contained: they are rather a list of topics and reminders, along with handy examples, code and drawings. -->
42 44 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. 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.
43 45
44 When it comes to code, you can normally copy-and-paste it from the document and use it as it is.
45 Or, you can browse the source code of the code snippets at <https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/tree/notes/code> to download it directly.
46 Some portion of code starts with a path in comment, and are followed by a link, like so:
47 46
47 On top of the notes, you will find in this document:
48 48
49 ```{.sqlmysql .numberLines .includeLink include=code/sql/HW_HelloWorld.sql}
49 - [References, at the very end of this document](#references),
50 - and for each chapter,
51 - A list of additional resources,
52 - A list of short exercises,
53 - Solution to those exercises,
54 - A list of problem,
55 - Solution to some of those problems.
56
57 Any feedback is greatly appreciated. Please refer to <https://spots.augusta.edu/caubert/db/ln/README.html#contributing> for how to contribute to those notes.
58 The syllabus is at <https://spots.augusta.edu/caubert/db/>, and the webpage for those notes is at <https://spots.augusta.edu/caubert/db/ln/>.
59
60 Please, refer to those notes using this entry [@AubertCSCI3410-DatabaseSystems]:
61
62 ```{.bibtex .includeLink include=bib/entry.bib}
50 63 ``` ```
51 64
52 This means that this code can be found at [https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/**blob/notes/code/sql/HW_HelloWorld.sql**](https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/blob/notes/code/sql/HW_HelloWorld.sql), and that you can click the link directly to access it^[This feature was [actually implemented by a student!](https://github.com/owickstrom/pandoc-include-code/pull/36).].
65 ### How to Access the Code in This Guide {-}
53 66
67 There are four way to access the code shared in those lecture notes:
68
69 #. You can simply copy-and-paste it from the document and use it as it is.
70 #. You can browse the source code of the code snippets at <https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/tree/notes/code> to download them directly.
71 #. You can clone the repository containing the notes, figures and code snippets to have a local copy of it. You can find instructions on how to do that at <https://spots.augusta.edu/caubert/db/ln/README.html>. Instructions on how to compile those notes and how to contribute are linked from this document, if you are curious.
72 #. You can use the links enclosed in the document.
73
74 For this latter aspect, note that some portion of code starts with a path in comment, and are followed by a link, like so:
75
76 ```{.sqlmysql .numberLines .includeLink include=code/sql/HW_HelloWorld.sql}
77 ```
78
79 This means that this code can be found at
80
81 [https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/
82 blob/notes/**code/sql/HW_HelloWorld.sql**](https://rocketgit.com/user/caubert/CSCI_3410/source/tree/branch/master/blob/notes/code/sql/HW_HelloWorld.sql)
83
84 and that you can click the link below the code directly to access it^[This feature was [actually implemented by a student!](https://github.com/owickstrom/pandoc-include-code/pull/36).].
85
86
54 87 The `SQL` code frequently starts with The `SQL` code frequently starts with
55 88
56 89 ``` ```
 
... ... USE HW_NAME_OF_SCHEMA;
62 95 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. 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.
63 96 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. 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.
64 97
65 Finally, the comments `-- start snippet something` and `-- end snippet something` can be ignored, as their are an artifice from [pandoc-include-code](https://github.com/owickstrom/pandoc-include-code) to select which portion of the code to display.
98 Finally, the comments
66 99
67 <!--: the colors and the ↪ `↪` ↪ ${\tiny\hookrightarrow}$, \tiny\ensuremath{\hookrightarrow} symbols are here to ease the reading, but you can ignore them safely.-->
100 ```
101 -- start snippet something
102 ```
68 103
69 To clone this source of those notes and have a local copy of it, please refer to the instructions at <https://spots.augusta.edu/caubert/db/ln/README.html>.
70 Instructions on how to compile those notes and how to contribute are linked from this document.
104 and
71 105
72 On top of the notes, you will find in this document:
106 ```
107 -- end snippet something
108 ```
109
110 can be ignored, as their are an artifice from [pandoc-include-code](https://github.com/owickstrom/pandoc-include-code) to select which portion of the code to display in those notes.
111
112 <!--: the colors and the ↪ `↪` ↪ ${\tiny\hookrightarrow}$, \tiny\ensuremath{\hookrightarrow} symbols are here to ease the reading, but you can ignore them safely.-->
73 113
74 - [References, at the very end of this document](#references)
75 - and for each chapter,
76 - A list of additional resources,
77 - A list of short exercises,
78 - Solution to those exercises, - A list of problem, - Sometimes, solution to some of those problems. Any feedback is greatly appreciated. Please refer to <https://spots.augusta.edu/caubert/db/ln/README.html#contributing> for how to contribute to those notes. The syllabus is at <https://spots.augusta.edu/caubert/db/>, and the webpage for this notes is at <https://spots.augusta.edu/caubert/db/ln/>. Please, refer to those notes using this entry [@AubertCSCI3410-DatabaseSystems]:
79 114
80 ```{.bibtex .includeLink include=bib/entry.bib}
81 ```
82 115
83 116 ## Planned Schedule {-} ## Planned Schedule {-}
84 117
 
... ... marks the (usual) separation between two lectures.
107 140
108 141 ## Exams Yearbooks {-} ## Exams Yearbooks {-}
109 142
110 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.
143 To give you a sense of what you will be asked during the exams, quizzes and projects, or simply to practise, please find below the exams given previous semesters, in reverse chronological order.
111 144 The quizzes are not indicated, but were generally a mix of up to five exercises and one problem from the relevant chapter(s). The quizzes are not indicated, but were generally a mix of up to five exercises and one problem from the relevant chapter(s).
112 145
113 146 ### Fall 2020 {-} ### Fall 2020 {-}
 
... ... A second project, more ambitious, was also asked from the students, and accounte
220 253
221 254 ## Typesetting and Acknowledgments {-} ## Typesetting and Acknowledgments {-}
222 255
223 The source code for those notes is hosted at [rocketgit](https://rocketgit.com/user/caubert/CSCI_3410), typeset in [markdown](https://commonmark.org/), and then compiled using [pandoc](https://pandoc.org/) and multiple filters ([pandoc-numbering](https://github.com/chdemko/pandoc-numbering), [pandoc-citeproc](https://github.com/jgm/pandoc-citeproc), [pandoc-include-code](https://github.com/owickstrom/pandoc-include-code)).
256 The source code for those notes is hosted at [rocketgit](https://rocketgit.com/user/caubert/CSCI_3410), typeset in [markdown](https://commonmark.org/), and then compiled using [pandoc](https://pandoc.org/) and multiple filters ([pandoc-numbering](https://github.com/chdemko/pandoc-numbering), the [citeproc library](https://github.com/jgm/citeproc), [pandoc-include-code](https://github.com/owickstrom/pandoc-include-code)).
224 257 The drawings use various [LaTeX](https://www.latex-project.org/) packages, including [PGF, TikZ](https://sourceforge.net/projects/pgf/), [tikz-er2](https://bitbucket.org/pavel_calado/tikz-er2/raw/da9f9f7f169647cad6d91df7975400b1605ae67a/tikz-er2.sty), [pgf-umlcd](https://github.com/pgf-tikz/pgf-umlcd/) and [tikz-dependency](https://ctan.org/pkg/tikz-dependency). The drawings use various [LaTeX](https://www.latex-project.org/) packages, including [PGF, TikZ](https://sourceforge.net/projects/pgf/), [tikz-er2](https://bitbucket.org/pavel_calado/tikz-er2/raw/da9f9f7f169647cad6d91df7975400b1605ae67a/tikz-er2.sty), [pgf-umlcd](https://github.com/pgf-tikz/pgf-umlcd/) and [tikz-dependency](https://ctan.org/pkg/tikz-dependency).
225 258 The help from the [TeX - LaTeX Stack Exchange](https://tex.stackexchange.com/) community greatly improved this document. The help from the [TeX - LaTeX Stack Exchange](https://tex.stackexchange.com/) community greatly improved this document.
226 259 The u͟n͟d͟e͟r͟l͟i͟n͟e͟^[For technical reasons, underlined words cannot be searched in the document.] text is obtained using [YayText](https://yaytext.com/underline/), the unicode symbols are searched in the ["Unicode characters and corresponding LaTeX math mode commands"](http://milde.users.sourceforge.net/LUCR/Math/unimathsymbols.html). The u͟n͟d͟e͟r͟l͟i͟n͟e͟^[For technical reasons, underlined words cannot be searched in the document.] text is obtained using [YayText](https://yaytext.com/underline/), the unicode symbols are searched in the ["Unicode characters and corresponding LaTeX math mode commands"](http://milde.users.sourceforge.net/LUCR/Math/unimathsymbols.html).
 
... ... Those lecture notes were created under an [Affordable Learning Georgia](https://
234 267
235 268 ![Affordable Learning Georgia](img/ALG_logo_hires.png){width=70%}\ ![Affordable Learning Georgia](img/ALG_logo_hires.png){width=70%}\
236 269
270 Those lecture notes have greatly benefited from the contributions of many students, included but not limited to Crystal Anderson, Bobby Mcmanus, Minh Nguyen and Poonam Veeral.
271 Additionally, Daniel Gozan, Mark Holcomb, Assya Sellak, Sydney Strong and Patrick Woolard helped [smash some bugs](https://spots.augusta.edu/caubert/projects/Capstone_Final_Document.pdf) in the tools used to produce this document.
272
273 Please refer to <https://spots.augusta.edu/caubert/db/ln/README.html#authors-and-contributors> for a detail of the contributions.
274
237 275
238 276 ## Resources {-} ## Resources {-}
239 277
 
... ... Let me introduce some of them:
243 281 - [@Textbook6] and [@Textbook7] are two editions of an excellent and detailled book on Databases. It is commonly used, cover almost every aspect in a fairly accessible way. - [@Textbook6] and [@Textbook7] are two editions of an excellent and detailled book on Databases. It is commonly used, cover almost every aspect in a fairly accessible way.
244 282 - [@Watt2014] is an open-source, cost-free textbook on Database design that can be of good support. - [@Watt2014] is an open-source, cost-free textbook on Database design that can be of good support.
245 283 - [@NoSQLDistilled] and [@Sullivan2015] are two textbooks on the NoSQL approach that are short and good introductions. - [@NoSQLDistilled] and [@Sullivan2015] are two textbooks on the NoSQL approach that are short and good introductions.
246 - To get started on Java and how it interfaces with databases, I believe [@Gaddis2014] is a good introduction.
247 - [awesome-mysql](https://github.com/shlomi-noach/awesome-mysql#readme) is a "curated list of awesome MySQL free and opensource software, libraries and resources" that is definitely worth checking out. Among other ressources, note [this bank of SQL programming exercises](https://github.com/XD-DENG/SQL-exercise).
284 - To get started on Java and how it interfaces with databases, [@Gaddis2014] is a good introduction.
285 - [awesome-mysql](https://github.com/shlomi-noach/awesome-mysql#readme) is a "curated list of awesome MySQL free and opensource software, libraries and resources" that is definitely worth checking out. Among other resources, there is [this bank of SQL programming exercises](https://github.com/XD-DENG/SQL-exercise).
248 286
249 287 Those resources are listed as complements, but it is not require to read them to understand the content of those notes. Those resources are listed as complements, but it is not require to read them to understand the content of those notes.
250 288 [@Watt2014] --being available free of charge-- is more descriptive than the current notes, and as such can constitutes a great complement. [@Watt2014] --being available free of charge-- is more descriptive than the current notes, and as such can constitutes a great complement.
 
... ... In those lecture notes, we will introduce one of this tool--the `SQL` programmin
297 335 We will also observe that a careful design is a mandatory step before implementing a catalog, and that how good a catalog is can be assessed, and introduce the tools to do so. We will also observe that a careful design is a mandatory step before implementing a catalog, and that how good a catalog is can be assessed, and introduce the tools to do so.
298 336 Finally, we will discuss how an application interacting with a database can be implemented and secured, and the alternatives to `SQL` offered by the NoSQL approach, as well as the limitations and highlights of both models. Finally, we will discuss how an application interacting with a database can be implemented and secured, and the alternatives to `SQL` offered by the NoSQL approach, as well as the limitations and highlights of both models.
299 337
300 ## Database
338 ## What is a Database?
301 339
302 340 A database (DB) is **a collection of related data**. A database (DB) is **a collection of related data**.
303 Data (= information, can be anything, really) + management (= logical organization of the data), through **D**ata**b**ase **M**anagement **S**ystem.
304 341
305 #. Represent a mini-world, a "Universe of Disclosure" (UoD).
306 #. Logically coherent, with a meaning.
307 #. Populated for a purpose.
342 It has two components, the _data_ (= information, can be anything, really) and the _management_ (= logical organization) of the data, generally through a **D**ata**b**ase **M**anagement **S**ystem.
343
344 A database
345
346 #. Represents a mini-world, a "Universe of Disclosure" (UoD).
347 #. Is logically coherent, with a meaning.
348 #. Has been populated for a purpose.
308 349
309 350 A DBMS has multiple components, as follows: A DBMS has multiple components, as follows:
310 351
 
... ... Note that
317 358 - The program can be written in any language, be a web interface, etc. It is sometimes part of the software shipped with the DBMS, but not necessarily (you can, and we will, develop your own program to interact with the DBMS). - The program can be written in any language, be a web interface, etc. It is sometimes part of the software shipped with the DBMS, but not necessarily (you can, and we will, develop your own program to interact with the DBMS).
318 359 - Most DBMS software includes a Command-Line Interface (CLI). - Most DBMS software includes a Command-Line Interface (CLI).
319 360 - The catalog (or schema, meta-data^[The term "meta-data" has numerous definition ("data about the data"): we use it here to refer to the description of the organization of the data, and not e.g. to statistical data about the data.]) contains the description of how the data is stored, i.e., the datatypes, nature of the attributes, etc. - The catalog (or schema, meta-data^[The term "meta-data" has numerous definition ("data about the data"): we use it here to refer to the description of the organization of the data, and not e.g. to statistical data about the data.]) contains the description of how the data is stored, i.e., the datatypes, nature of the attributes, etc.
320 - Sometimes, catalog and data are closer than pictured (you can have "self-describing meta-data", that is, they cannot be distinguished).
361 - Sometimes, catalog and data are closer than pictured (you can have "self-describing meta-data", that is, they cannot be distinguished), this is typically the case in some of the NoSQL approaches.
321 362
322 363 ## Database Management System (DBMS) ## Database Management System (DBMS)
323 364
 
... ... You can think of a tool to
335 376 #. Allow to change its content, as well as its organization, #. Allow to change its content, as well as its organization,
336 377 #. Allow multiple persons to access all or parts of it at the same time. #. Allow multiple persons to access all or parts of it at the same time.
337 378
338 ## Subtasks
379 ## How Are the Tasks Distributed?
339 380
340 381 Exactly like a program can have Exactly like a program can have
341 382
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/caubert/CSCI_3410

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/caubert/CSCI_3410

Clone this repository using git:
git clone git://git.rocketgit.com/user/caubert/CSCI_3410

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main