From e9c9f8d3ccc688980a290b1a46887d99cf3a042d Mon Sep 17 00:00:00 2001 From: Michael Kowalczyk Date: Wed, 23 Oct 2024 08:58:47 -0400 Subject: [PATCH] Day 33 --- Day 24-27 (database)/notes.txt | 4 +- Labs/03/class diagram1.png | Bin 0 -> 6890 bytes Labs/03/class diagram2.png | Bin 0 -> 8819 bytes Labs/03/index.html | 131 +++++++++++++++++++++++++++++++++ Labs/labGuide.css | 10 +++ 5 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 Labs/03/class diagram1.png create mode 100644 Labs/03/class diagram2.png create mode 100644 Labs/03/index.html diff --git a/Day 24-27 (database)/notes.txt b/Day 24-27 (database)/notes.txt index c4f1c8a..e480764 100644 --- a/Day 24-27 (database)/notes.txt +++ b/Day 24-27 (database)/notes.txt @@ -40,8 +40,8 @@ CREATE TABLE Visits( ); CREATE TABLE Visits_Users ( - VisitID INTEGER, - UserID INTEGER, + VisitID INTEGER NOT NULL, + UserID INTEGER NOT NULL, Willingness VARCHAR(10) CHECK(Willingness IN ('cannot', 'prefer not', 'can do')) NOT NULL, /* unknown if pair is missing from the table */ PRIMARY KEY (VisitID, UserID), FOREIGN KEY(VisitID) REFERENCES Visits(VisitID), diff --git a/Labs/03/class diagram1.png b/Labs/03/class diagram1.png new file mode 100644 index 0000000000000000000000000000000000000000..f23523f69ad260fab731ebe4ade66f06b3bf1451 GIT binary patch literal 6890 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 literal 0 HcmV?d00001 diff --git a/Labs/03/class diagram2.png b/Labs/03/class diagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd883a7bb956d507452666b8c3e30fa4b894d2e GIT binary patch literal 8819 zcmcJUbyOVdvbWI?AV31d7~BUEB)Gf#puq_)gAQ&9AtaFCgS!VNxCKw};2L0XcX!R# zWbeK9KIfjbzPs+a_n)3wJ>ApwzE$
cWhm1Xd7NN`Y4Q1IkrB_Sv%Xm^0`!FSPs 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 US>gV`>lPF_DP_qbapQph2NW*w3IG5A literal 0 HcmV?d00001 diff --git a/Labs/03/index.html b/Labs/03/index.html new file mode 100644 index 0000000..c0fa70d --- /dev/null +++ b/Labs/03/index.html @@ -0,0 +1,131 @@ + + + + + + + + Lab 3: More SQL Commands + + + + + +
+ +

Lab 3: More SQL Commands

+

In this lab you get experience using SQL junction tables.

+ +

Setting up

+

+ Start with this SQL interpreter (clear out the default SQL supplied). + Throughout this exercise, test your SQL commands in the interpreter, but keep a copy of all of your working commands in your text document. You can also work with a local copy of SQLite if you prefer. +

+ +

Database design

+

+ We want a database that implements the following entity-relationship-diagram, where each author has written one or more books, and each book is written by one or more authors:

+

+ The trouble is there isn't any clean way to implement this with just two database tables. If each book only had one author, then the Books table could just have AuthorID as a foreign key. But then how would you indicate multiple authors? Instead, we will use a junction table to resolve this difficulty:

+

+ Every element of the Authors_Books junction table represents a single author being on a single book. We would represent 4 authors on a single book by having 4 entries in the junction table: each with a different AuthorID but the same BookID. We could determine which books someone has authored by looking at all the BookIDs for that given AuthorID. +

+

+ Create tables for Authors and Books, being sure to declare the primary key of each. Then create the junction table as follows. (By the way, "junction table" is only one of many different terms people use for this pattern.) +

+ +
CREATE TABLE Authors_Books(
+	AuthorID INTEGER NOT NULL,
+	BookID INTEGER NOT NULL,
+	PRIMARY KEY (AuthorID, BookID),
+	FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID),
+	FOREIGN KEY(BookID) REFERENCES Books(BookID)
+);
+ +

+ We say NOT NULL because it only makes sense to have an entry in our junction table with both an author and a book; the pair of IDs together is the unique association we care about between authors and books, so we defined the primary key where each pair of IDs is unique. We are still free to have authors and books appear multiple times, as long as a given (AuthorID,BookID) pair only appears once. The FOREIGN KEY constraints ensure that we don't end up in a situation where a book or author gets deleted but there is still a reference to it in the Authors_Books table. +

+

Populate it

+

+ Use insert commands to put in the following data. +

+ + + + + + + + + + + + + + + + + + + + +
Authors
Name
Tolkien
Gamma
Helm
Johnson
Vlissides
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Books
TitleAuthors
The Lord of the RingsTolkien
The HobbitTolkien
Design PatternsGamma, Helm, Johnson, Vlissides
RefactoringGamma
Fundamentals of Argumentation TheoryJohnson
Pattern HatchingVlissides
+ +

Queries

+

+

    +
  • Write a SELECT command that shows all author names, together with all books authored by them. Note that you will have to use more than one JOIN clause to pull this off. It should look something like this: SELECT ___ FROM ___ JOIN ___ ON ___ JOIN ___ ON ___;
  • +
+
    +
  • Add a WHERE clause to your SELECT statement so that the results are restricted to whichever AuthorID you choose. You may need to use the full Authors.AuthorID syntax to make the column name unambiguous.
  • +
+

+ +
+ +

When you are done, show me your work to get credit for it.

+ +
+ + + + + + + \ No newline at end of file diff --git a/Labs/labGuide.css b/Labs/labGuide.css index 427979d..4387f32 100644 --- a/Labs/labGuide.css +++ b/Labs/labGuide.css @@ -62,4 +62,14 @@ blockquote { img { max-width: 100%; +} + +table { + border-collapse: collapse; +} + +td, th { + border: 1px solid black; + padding: 4px; + background-color: white; } \ No newline at end of file