List of commits:
Subject Hash Author Date (UTC)
ALT in img folder 6e6469575d825f6c7360b88d6b387aee709b643c pveeral@augusta.edu 2020-04-20 15:26:47
rapid adjustments in contrib beb43332953ec4e2a8e4376a90ce58b1234eadba aubert@math.cnrs.fr 2020-04-20 00:10:44
Updated CONTRIB.md c29d920e1efbc84766a3caafc0db2fcab4220b32 pveeral@augusta.edu 2020-04-19 19:28:45
testing 4ece7ba3d5c5d99361ef5eac92bb0848f2ea5318 pveeral@augusta.edu 2020-04-19 18:27:50
Small edit, correcting maefile. 7baa188be7d322e5288b498afbb7beaa96a9770b aubert@math.cnrs.fr 2020-04-19 07:36:08
Cleaned latex files. 79b68f7b709ddeebc8133f7962fe5aabb3376304 aubert@math.cnrs.fr 2020-04-19 06:22:30
Minor corrections in installation manual. 436cee8616c25ccbed8bc406d988c2b4d28420f8 aubert@math.cnrs.fr 2020-04-19 06:19:04
Minor corrections in installation manual. cb8cdfbd506a1344c81aecda055165cc1ca54ece aubert@math.cnrs.fr 2020-04-19 06:17:52
Working on install manual. 3702c6437ee163eb4a61b4d69cffee8c8a76dc3d aubert@math.cnrs.fr 2020-04-19 06:04:22
Worked on makefiles and example file. 4255d5e85bb684349f7f7798455dd8b3a273254b aubert@math.cnrs.fr 2020-04-19 04:56:53
Re-idented some of the code. 124375e6bed1edb96d1bb4bcec8f111c8a3a1197 aubert@math.cnrs.fr 2020-04-19 03:10:02
Java indentation 2b317a12b7ab52bdca576a1bb46b2a2ce295464f guest 2020-04-18 22:21:04
test 6fefa044794ff1d74a3d2493556c836b3dd97e74 guest 2020-04-18 22:18:44
Java indentation 5b0e0eb38484a8c67517a36a438f148bd5efa740 guest 2020-04-18 22:14:01
Worked on install notes. b46b931ef11e3cb7dfe87c7f91ec9d5c558567e6 aubert@math.cnrs.fr 2020-04-17 05:22:20
Started to integrate installation manual to notes. fd27b7686dd4c9d99163cf7badc720cd4a050221 aubert@math.cnrs.fr 2020-04-17 04:09:11
Replaced picture with text in Naming_Convention.md. aff8c98c70b0834f9b0f076b881975daf3cdda03 aubert@math.cnrs.fr 2020-04-17 03:48:38
Testing. b1a0942b15742ce987e4ad63848e9e2afcdde7ae aubert@math.cnrs.fr 2020-04-17 02:03:52
Added explanation on the importance of alt text in known bugs. 3bddd86e1072b095a9f9d02f8c035f8d8f3e7155 aubert@math.cnrs.fr 2020-04-17 01:44:51
Notes on passing parameters in url eea245da85acbc2e3cf2dd94e10170dcd10eb04f aubert@math.cnrs.fr 2020-04-16 01:55:57
Commit 6e6469575d825f6c7360b88d6b387aee709b643c - ALT in img folder
Author: pveeral@augusta.edu
Author date (UTC): 2020-04-20 15:26
Committer name: pveeral@augusta.edu
Committer date (UTC): 2020-04-20 15:26
Parent(s): 71362db8ab1993d97e7bf1d00d00ba0b9ffae3dc
Signer:
Signing key:
Signing status: N
Tree: 2a12b07f57adc5e977ffa6581232e18913205ef0
File Lines added Lines deleted
notes/lectures_notes.md 11 11
File notes/lectures_notes.md changed (mode: 100644) (index 5e1e6c1..95b8c87)
... ... The following links could be useful:
2646 2646 #. We will now install the various components needed for this class, leaving all the choices by defaults. This means that you need to do the following: #. We will now install the various components needed for this class, leaving all the choices by defaults. This means that you need to do the following:
2647 2647 #. Leave the first option on "Developer Default" and click on "Next", or click on "Custom", and select the following: #. Leave the first option on "Developer Default" and click on "Next", or click on "Custom", and select the following:
2648 2648
2649 ![](img/mysql_install.png){width=90%}
2649 ![mysql Installation](img/mysql_install.png){width=90%}
2650 2650
2651 2651 #. Click on "Next" even if you do not meet all the requirements #. Click on "Next" even if you do not meet all the requirements
2652 2652 #. Click on "Execute". The system will download and install several softwares (this may take some time). #. Click on "Execute". The system will download and install several softwares (this may take some time).
 
... ... Will not be able to represent it, because of https://stackoverflow.com/a/2126026
5340 5340
5341 5341 From relational models to ER models (sometimes needed) From relational models to ER models (sometimes needed)
5342 5342
5343 ![](img/reverse_eng_01.jpeg){width=90%}
5343 ![Storm Example](img/reverse_eng_01.jpeg){width=90%}
5344 5344
5345 ![](img/reverse_eng_03.jpeg){width=90%}
5345 ![Lecture Example](img/reverse_eng_03.jpeg){width=90%}
5346 5346
5347 5347 --- ---
5348 5348
 
... ... Wide, powerful, but also intimidating.
5841 5841
5842 5842 You know UML from object-oriented programming language: You know UML from object-oriented programming language:
5843 5843
5844 ![](img/class_diagram.png){width=90%}
5844 ![Class Diagram](img/class_diagram.png){width=90%}
5845 5845
5846 5846 That's a class diagram, there are other types of diagrams, they are not unrelated! That's a class diagram, there are other types of diagrams, they are not unrelated!
5847 5847 For instance, using communication diagrams, deployment diagrams, and state chart diagrams, you can collect the requirements needed to draw a class diagram! For instance, using communication diagrams, deployment diagrams, and state chart diagrams, you can collect the requirements needed to draw a class diagram!
 
... ... They each offer a viewpoint on a software that will help you in making sure the
5851 5851
5852 5852 There are 14 different types of diagrams, divided between two categories: structural and behavioral. There are 14 different types of diagrams, divided between two categories: structural and behavioral.
5853 5853
5854 ![](img/UML_diagram_hierarchie.svg)
5854 ![UML Diagram Hierarchie](img/UML_diagram_hierarchie.svg)
5855 5855
5856 5856 (Source: <https://commons.wikimedia.org/wiki/File:UML_diagrams_overview.svg>) (Source: <https://commons.wikimedia.org/wiki/File:UML_diagrams_overview.svg>)
5857 5857
 
... ... They describe the behavioral, or dynamic, relationship, between components.
5877 5877 - **State machine diagram**, a.k.a., state chart diagram, describes how a system react to external events. You can picture yourself a complex form of finite state automata diagram. - **State machine diagram**, a.k.a., state chart diagram, describes how a system react to external events. You can picture yourself a complex form of finite state automata diagram.
5878 5878 - **Activity diagram** is a flow of control between activities. You may have seen them already, they are supposedly easy to follow: - **Activity diagram** is a flow of control between activities. You may have seen them already, they are supposedly easy to follow:
5879 5879
5880 ![](img/activity_diagram.png)
5880 ![Activity Diagram Quiz Example](img/activity_diagram.png)
5881 5881
5882 5882 Then there is the sub-category of "Interaction diagrams": Then there is the sub-category of "Interaction diagrams":
5883 5883
 
... ... Associations are, to some extend, more expressive than relationship types:
5911 5911 - **As for relationship types** they can have attributes: actually, a whole class can be connected to an association. - **As for relationship types** they can have attributes: actually, a whole class can be connected to an association.
5912 5912 - **As for relationship types**, they can express a cardinality constraint on the relation between classes. They are written as `min .. max`, with `*` for "no maximum", and the following shorthands: `*` stands for `0..*` and `1` stands for `1..1`. An association with `1` on one side and `*` on the other (resp. `1` and `1`, `*` and `1`, `*` and `*`) is sometimes called "one-to-many" (resp., "one-to-one", "many-to-one", "many-to-many"). The notation in partially inverted w.r.t. ER diagrams: - **As for relationship types**, they can express a cardinality constraint on the relation between classes. They are written as `min .. max`, with `*` for "no maximum", and the following shorthands: `*` stands for `0..*` and `1` stands for `1..1`. An association with `1` on one side and `*` on the other (resp. `1` and `1`, `*` and `1`, `*` and `*`) is sometimes called "one-to-many" (resp., "one-to-one", "many-to-one", "many-to-many"). The notation in partially inverted w.r.t. ER diagrams:
5913 5913
5914 ![](img/multiplicities.png)
5914 ![1-1,3-1 Relationship Example ](img/multiplicities.png)
5915 5915
5916 5916 Additionaly, associations can be "extended", and they are not the only kind of relationship that can be expressed between two classes. Additionaly, associations can be "extended", and they are not the only kind of relationship that can be expressed between two classes.
5917 5917
 
... ... Pictures in the img/ folder.
5940 5940
5941 5941 Qualified associations can be used for weak entities, but not only. Qualified associations can be used for weak entities, but not only.
5942 5942
5943 ![](img/class_diagram_relationships.png)
5943 ![Class Diagram Relationships](img/class_diagram_relationships.png)
5944 5944
5945 5945 Some of those subtleties depend on your need, and are subjective, but are important tool to design properly a database, and relieving the programmer from the burden of figuring out many details. Some of those subtleties depend on your need, and are subjective, but are important tool to design properly a database, and relieving the programmer from the burden of figuring out many details.
5946 5946
 
... ... Problem (Reading the MOVIES database ER schema) +.#movie
6653 6653
6654 6654 Consider the ER schema for the MOVIES database ([@Textbook6, Figure 7.24]): Consider the ER schema for the MOVIES database ([@Textbook6, Figure 7.24]):
6655 6655
6656 ![](img/movies_example)
6656 ![Movies Database Example](img/movies_example)
6657 6657
6658 6658 Given the constraints shown in the ER schema, respond to the following statements with *True* or *False*. Given the constraints shown in the ER schema, respond to the following statements with *True* or *False*.
6659 6659 Justify each answer. Justify each answer.
 
... ... Solution to [%D %n (%T)](#problem:car-insurance)
7234 7234 ~ ~
7235 7235 Two possible solutions are Two possible solutions are
7236 7236
7237 ![](img/car_example)
7237 ![ER Diagram Car Insurance](img/car_example)
7238 7238
7239 7239 and and
7240 7240
 
... ... Solution to [%D %n (%T)](#problem:reverseeng)
7559 7559 ```{.sqlmysql .numberLines include=code/sql/HW_Person.sql} ```{.sqlmysql .numberLines include=code/sql/HW_Person.sql}
7560 7560 ``` ```
7561 7561
7562 ![](img/mysql_workbench_drawing)
7562 ![mysql Workbench Diagram](img/mysql_workbench_drawing)
7563 7563
7564 7564 # Database Applications {#databases-applications} # Database Applications {#databases-applications}
7565 7565
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