aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-09-29 14:36:40 +0200
committerlonkaars <loek@pipeframe.xyz>2022-09-29 14:36:40 +0200
commit8510d3aec5fb5e5ff4f7a37f2450c9a250745043 (patch)
tree80584164167f2cf3a6386e161012019f64621fc6
parent4e1edb93cc47a616b89fa5188eb444eb665e0160 (diff)
beginsels opdracht 1
-rw-r--r--.gitignore3
-rwxr-xr-xopdracht-1/build6
-rw-r--r--opdracht-1/opdracht-1.m4110
-rw-r--r--opdracht-1/q2.sql38
-rw-r--r--opdracht-1/q3.sql35
-rw-r--r--opdracht-1/q4.sql20
-rw-r--r--opdracht-1/q5.sql36
-rw-r--r--opdracht-1/q6.sql2
-rw-r--r--opdracht-1/reset.sql5
-rw-r--r--opdracht-1/t3.sql1
-rw-r--r--opdracht-1/t4.sql1
-rw-r--r--opdracht-1/t5.sql14
-rw-r--r--opdracht-1/t6.sql1
-rw-r--r--opdracht-1/t7.sql3
14 files changed, 275 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3756c5e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+opdracht-*/*.html
+opdracht-*/opdracht.pdf
+opdracht-*/opdracht-*.md
diff --git a/opdracht-1/build b/opdracht-1/build
new file mode 100755
index 0000000..17e3379
--- /dev/null
+++ b/opdracht-1/build
@@ -0,0 +1,6 @@
+#!/bin/bash
+cat reset.sql q*.sql | mysql -u root mysql
+for file in t*.sql; do
+ mysql -Hu root mysql < "$file" &> "${file/%.sql}.html"
+done
+m4 opdracht-1.m4 > opdracht-1.md
diff --git a/opdracht-1/opdracht-1.m4 b/opdracht-1/opdracht-1.m4
new file mode 100644
index 0000000..efe4d96
--- /dev/null
+++ b/opdracht-1/opdracht-1.m4
@@ -0,0 +1,110 @@
+changequote(`{{', `}}')
+
+define({{q_norm}}, {{
+## Opdracht $1
+
+```sql
+include({{q$1.sql}})
+```
+}})
+
+define({{q_with_output}}, {{
+## Opdracht $1
+
+```sql
+include({{t$1.sql}})
+```
+
+include({{t$1.html}})
+}})
+
+define({{q_with_test}}, {{
+q_norm({{$1}})
+
+```sql
+include({{t$1.sql}})
+```
+
+include({{t$1.html}})
+}})
+
+# Practicum 1
+
+## Opdracht 1
+
+Is geinstalleerd
+
+q_norm(2)
+q_with_test(3)
+q_with_test(4)
+q_with_test(5)
+q_with_test(6)
+q_with_output(7)
+
+## Opdracht 8
+
+Deze oplossing biedt geen volledige redundantie omdat de kolom `Eenheid` in de
+`Product` tabel herhaalde waarden bevat. Ook kunnen er meerdere klanten zijn
+die op één adres wonen, maar momenteel zouden de kolommen `Postcode` en
+`Huisnummer` van tabel `Klant` herhaald worden.
+
+## Opdracht 9
+
+Een strokendiagram bevat alleen informatie over de kolomnamen en relaties van
+een tabel. Een populatiediagram laat ook de inhoud zien voor elke tabel.
+
+## Opdracht 10
+
+> Wat is single point of definition, en wat levert dit op?
+
+## Opdracht 11
+
+> Welke kolommen van de tabel ‘tblKlant’ voldoen aan de ‘verplichte- waarderegel’
+
+## Opdracht 12
+
+> Op welke tabel of tabellen is de ‘referentiele- integriteitsregel’ van toepassing en waarom?
+
+## Opdracht 13
+
+> Indien een ‘veel op veel’ relatie ontstaat, hoe wordt dit dan opgelost?
+
+## Opdracht 14
+
+> Wat zijn in het gegeven ERD de ‘eigenschappen’ van tabel ‘tblProduct’
+
+## Opdracht 15
+
+> Wat zijn de twee belangrijkste transacties en wat betekenen deze?
+
+## Opdracht 16
+
+> Wat is het verschil tussen ‘0’ en ‘NULL’?
+
+## Opdracht 17
+
+> Wat betekent ‘normaliseren’ en wat is het doel hiervan?
+
+## Opdracht 18
+
+> In de tabel ‘tblOrder’ wordt de status bijgehouden per order. Enkele statussen zouden kunnen zijn:
+>
+> - Geleverd
+> - In bestelling
+> - Niet meer leverbaar
+>
+> Hoe zou je de databasestructuur kunnen verbeteren op basis van de tabel
+> ‘tblOrder’ met het oog op onderhoud van de statussen?
+
+## Opdracht 19
+
+> In de tabel ‘product’ is iets dergelijks van toepassing als bij vraag 18.
+>
+> - Wat is hier aan de hand?
+> - Hoe kun je dit verbeteren?
+
+## Opdracht 20
+
+> Stel dat je de wijzigingen van vraag 18 en 19 bij alle afnemers van je software gelijktijdig wilt doorvoeren.
+>
+> Hoe zou je dit het beste op afstand kunnen uitvoeren?
diff --git a/opdracht-1/q2.sql b/opdracht-1/q2.sql
new file mode 100644
index 0000000..fda5f53
--- /dev/null
+++ b/opdracht-1/q2.sql
@@ -0,0 +1,38 @@
+create table if not exists Klant (
+ ID int unsigned not null auto_increment,
+ Naam varchar(45) null,
+ Postcode varchar(45) not null,
+ Huisnummer int not null,
+ Telefoonnummer int null,
+ primary key (ID)
+);
+
+create table if not exists `Order` (
+ ID int unsigned not null auto_increment,
+ KlantID int unsigned not null,
+ Besteldatum date not null,
+ Status varchar(45) not null,
+ primary key (ID),
+ foreign key (KlantID) references Klant(ID)
+);
+
+create table if not exists Product (
+ ID int unsigned not null auto_increment,
+ Naam varchar(45) not null unique,
+ Eenheid varchar(45) not null,
+ Prijs FLOAT(24) not null,
+ Beschrijving varchar(500) not null,
+ primary key (ID)
+);
+
+create table if not exists OrderProduct (
+ ID int unsigned not null auto_increment,
+ OrderID int unsigned not null,
+ ProductID int unsigned not null,
+ Aantal int unsigned not null,
+ primary key (ID),
+ foreign key (OrderID) references `Order`(ID),
+ foreign key (ProductID) references Product(ID),
+ unique(OrderID, ProductID)
+);
+
diff --git a/opdracht-1/q3.sql b/opdracht-1/q3.sql
new file mode 100644
index 0000000..4eb247b
--- /dev/null
+++ b/opdracht-1/q3.sql
@@ -0,0 +1,35 @@
+insert into Product ( Naam, Eenheid, Prijs, Beschrijving ) values (
+ "Komkommer",
+ "Kg",
+ 0.95,
+ "Lekker fris en knapperig, veels te duur tegenwoordig!"
+);
+
+insert into Product ( Naam, Eenheid, Prijs, Beschrijving ) values (
+ "Donut",
+ "Stuk",
+ 0.95,
+ "Rond, met gat"
+);
+
+insert into Product ( Naam, Eenheid, Prijs, Beschrijving ) values (
+ "Dreft",
+ "Liter",
+ 4.49,
+ "Goed soppen met dit groene goedje"
+);
+
+insert into Product ( Naam, Eenheid, Prijs, Beschrijving ) values (
+ "Vim schuurpoeder",
+ "Kg",
+ 1.35,
+ "Niet te verwarren met de tekstverwerker"
+);
+
+insert into Product ( Naam, Eenheid, Prijs, Beschrijving ) values (
+ "Spons",
+ "Stuk",
+ 0.95,
+ "Misschien kun je deze met vim gebruiken"
+);
+
diff --git a/opdracht-1/q4.sql b/opdracht-1/q4.sql
new file mode 100644
index 0000000..4f2727f
--- /dev/null
+++ b/opdracht-1/q4.sql
@@ -0,0 +1,20 @@
+insert into Klant ( Naam, Postcode, Huisnummer, Telefoonnummer ) values (
+ "Hennie",
+ "2134SD",
+ 192,
+ 264765234
+);
+
+insert into Klant ( Naam, Postcode, Huisnummer, Telefoonnummer ) values (
+ "Bert",
+ "2174DF",
+ 156,
+ 263564070
+);
+
+insert into Klant ( Naam, Postcode, Huisnummer, Telefoonnummer ) values (
+ "Bernard",
+ "1270IC",
+ 120,
+ 918437957
+);
diff --git a/opdracht-1/q5.sql b/opdracht-1/q5.sql
new file mode 100644
index 0000000..88fd2a3
--- /dev/null
+++ b/opdracht-1/q5.sql
@@ -0,0 +1,36 @@
+insert into `Order` (KlantID, Besteldatum, Status) values (
+ 1,
+ '2022-09-29',
+ "Besteld"
+);
+
+insert into `Order` (KlantID, Besteldatum, Status) values (
+ 2,
+ '2014-03-10',
+ "Geleverd"
+);
+
+insert into `Order` (KlantID, Besteldatum, Status) values (
+ 2,
+ '2018-12-29',
+ "Geleverd"
+);
+
+insert into `Order` (KlantID, Besteldatum, Status) values (
+ 3,
+ '2023-07-25',
+ "Besteld"
+);
+
+insert into `Order` (KlantID, Besteldatum, Status) values (
+ 3,
+ '2018-02-20',
+ "Geleverd"
+);
+
+insert into OrderProduct (OrderID, ProductID, Aantal) values (1, 1, 20);
+insert into OrderProduct (OrderID, ProductID, Aantal) values (2, 2, 12);
+insert into OrderProduct (OrderID, ProductID, Aantal) values (3, 3, 6);
+insert into OrderProduct (OrderID, ProductID, Aantal) values (4, 4, 11);
+insert into OrderProduct (OrderID, ProductID, Aantal) values (5, 5, 3);
+
diff --git a/opdracht-1/q6.sql b/opdracht-1/q6.sql
new file mode 100644
index 0000000..e8d43ff
--- /dev/null
+++ b/opdracht-1/q6.sql
@@ -0,0 +1,2 @@
+alter table `Order` drop foreign key KlantID;
+alter table `Order` add constraint KlantID foreign key (KlantID) references Klant(ID) on update cascade;
diff --git a/opdracht-1/reset.sql b/opdracht-1/reset.sql
new file mode 100644
index 0000000..c2f5ee9
--- /dev/null
+++ b/opdracht-1/reset.sql
@@ -0,0 +1,5 @@
+drop table OrderProduct;
+drop table `Order`;
+drop table Product;
+drop table Klant;
+
diff --git a/opdracht-1/t3.sql b/opdracht-1/t3.sql
new file mode 100644
index 0000000..a04cef1
--- /dev/null
+++ b/opdracht-1/t3.sql
@@ -0,0 +1 @@
+select * from Product;
diff --git a/opdracht-1/t4.sql b/opdracht-1/t4.sql
new file mode 100644
index 0000000..4d92133
--- /dev/null
+++ b/opdracht-1/t4.sql
@@ -0,0 +1 @@
+select * from Klant;
diff --git a/opdracht-1/t5.sql b/opdracht-1/t5.sql
new file mode 100644
index 0000000..7d97b92
--- /dev/null
+++ b/opdracht-1/t5.sql
@@ -0,0 +1,14 @@
+select
+ Klant.ID as Klantnr,
+ Klant.Naam,
+ `Order`.ID as Ordernr,
+ `Order`.Besteldatum as dtBesteldatum,
+ `Order`.Status,
+ Product.Naam as Product,
+ Product.Eenheid,
+ Product.Beschrijving,
+ OrderProduct.Aantal
+from Klant
+join `Order` on `Order`.KlantID = Klant.ID
+join OrderProduct on OrderProduct.OrderID = `Order`.ID
+join Product on Product.ID = OrderProduct.ProductID;
diff --git a/opdracht-1/t6.sql b/opdracht-1/t6.sql
new file mode 100644
index 0000000..7abcc17
--- /dev/null
+++ b/opdracht-1/t6.sql
@@ -0,0 +1 @@
+update Klant set ID=4 where ID=3;
diff --git a/opdracht-1/t7.sql b/opdracht-1/t7.sql
new file mode 100644
index 0000000..133cff5
--- /dev/null
+++ b/opdracht-1/t7.sql
@@ -0,0 +1,3 @@
+select * from `Order`;
+select * from `Order` where KlantID = 1;
+select * from Product where Prijs < 100;