@m_holtermann
Deletion Anomalies
PersonID Planet Name
1 Naboo
2 Tatooine
3 Alderaan
3 Naboo
PersonID Name Gender
1 Padmé Female
2 Luke Male
3 Leia Female
Slide 16
Slide 16 text
@m_holtermann
Third Normal Form
(3NF)
Slide 17
Slide 17 text
@m_holtermann
PlanetID Name Water
10 Naboo 85%
11 Tatooine 1%
12 Alderaan 78%
13 Dagobah 88%
PersonID Name Gender
1 Padmé Female
2 Luke Male
3 Leia Female
PersonID PlanetID
1 10
2 11
3 10
3 12
Slide 18
Slide 18 text
@m_holtermann
Database normalization is
great!
Slide 19
Slide 19 text
@m_holtermann
Always?
Slide 20
Slide 20 text
@m_holtermann
Yet Another Wiki
Slide 21
Slide 21 text
@m_holtermann
Page
+ PageID
Name
Slug
Revision
+ RevisionID
PageID
Text
Date
Database Schema
Slide 22
Slide 22 text
@m_holtermann
Task 1: Fetch a single page
and its current revision
Slide 23
Slide 23 text
@m_holtermann
Task 2: Fetch all page titles
and
the date of their current
revision
Slide 24
Slide 24 text
Task 1: Fetch a single page
SELECT *
FROM page
INNER JOIN revision
ON page.page_id = revision.page_id
WHERE page.slug = 'some-slug'
ORDER BY revision.date DESC
LIMIT 1;
Slide 25
Slide 25 text
Task 2: Fetch all pages
SELECT page.name, last_revs.date
FROM page
INNER JOIN (
SELECT revision.page_id, MAX(revision.date) date
FROM revision
GROUP BY revision.page_id
) last_revs
ON page.page_id = last_revs.page_id;