summaryrefslogtreecommitdiff
path: root/graphs/sql/daily_gazette
diff options
context:
space:
mode:
Diffstat (limited to 'graphs/sql/daily_gazette')
-rw-r--r--graphs/sql/daily_gazette/req01.sql14
-rw-r--r--graphs/sql/daily_gazette/req02.sql16
-rw-r--r--graphs/sql/daily_gazette/req03.sql28
-rw-r--r--graphs/sql/daily_gazette/req04.sql11
-rw-r--r--graphs/sql/daily_gazette/req05.sql2
5 files changed, 71 insertions, 0 deletions
diff --git a/graphs/sql/daily_gazette/req01.sql b/graphs/sql/daily_gazette/req01.sql
new file mode 100644
index 0000000..35ce8b8
--- /dev/null
+++ b/graphs/sql/daily_gazette/req01.sql
@@ -0,0 +1,14 @@
+CREATE SCHEMA rr_times;
+CREATE TABLE rr_times.locales
+(
+ language_code VARCHAR(2),
+ country_code VARCHAR(2),
+ name VARCHAR(50) UNIQUE NOT NULL,
+ PRIMARY KEY (language_code, country_code)
+);
+CREATE TABLE rr_times.translated_articles
+(
+ id SERIAL PRIMARY KEY,
+ title TEXT NOT NULL,
+ body TEXT NOT NULL
+);
diff --git a/graphs/sql/daily_gazette/req02.sql b/graphs/sql/daily_gazette/req02.sql
new file mode 100644
index 0000000..57eeb94
--- /dev/null
+++ b/graphs/sql/daily_gazette/req02.sql
@@ -0,0 +1,16 @@
+CREATE TABLE rr_times.translated_headlines
+(
+ id SERIAL PRIMARY KEY,
+ title TEXT NOT NULL,
+ subtitle TEXT
+);
+CREATE TABLE rr_times.issues
+(
+ id SERIAL PRIMARY KEY,
+ issued_at DATE NOT NULL,
+ language VARCHAR(2),
+ country VARCHAR(2),
+ FOREIGN KEY (language, country) REFERENCES rr_times.locales (language_code, country_code) ON DELETE SET NULL,
+ translated_headline_id INTEGER NOT NULL,
+ FOREIGN KEY (translated_headline_id) REFERENCES rr_times.translated_headlines (id) ON DELETE RESTRICT
+);
diff --git a/graphs/sql/daily_gazette/req03.sql b/graphs/sql/daily_gazette/req03.sql
new file mode 100644
index 0000000..f0173c8
--- /dev/null
+++ b/graphs/sql/daily_gazette/req03.sql
@@ -0,0 +1,28 @@
+CREATE TYPE rr_times.rubric_theme AS ENUM
+(
+ 'TECHNOLOGY',
+ 'ECONOMY',
+ 'HEALTH',
+ 'SPORT',
+ 'CULTURE',
+ 'POLITICS',
+ 'SCIENCE',
+ 'TRAVEL',
+ 'SOCIETY',
+ 'ENVIRONMENT',
+ 'EDUCATION',
+ 'MEDIA',
+ 'FASHION',
+ 'ARCHITECTURE',
+ 'BUSINESS',
+ 'SPACE'
+);
+CREATE TABLE rr_times.rubrics
+(
+ id SERIAL UNIQUE NOT NULL,
+ theme rr_times.rubric_theme NOT NULL,
+ nb_columns INTEGER NOT NULL,
+ issue_id INTEGER NOT NULL,
+ FOREIGN KEY (issue_id) REFERENCES rr_times.issues (id) ON DELETE CASCADE,
+ PRIMARY KEY (id, theme, issue_id)
+);
diff --git a/graphs/sql/daily_gazette/req04.sql b/graphs/sql/daily_gazette/req04.sql
new file mode 100644
index 0000000..a8e3eff
--- /dev/null
+++ b/graphs/sql/daily_gazette/req04.sql
@@ -0,0 +1,11 @@
+CREATE TABLE rr_times.articles
+(
+ id SERIAL PRIMARY KEY,
+ translated_article_id INTEGER NOT NULL,
+ rubric_id INTEGER NOT NULL,
+ language VARCHAR(2) NOT NULL,
+ country VARCHAR(2) NOT NULL,
+ FOREIGN KEY (language, country) REFERENCES rr_times.locales (language_code, country_code) ON DELETE CASCADE,
+ FOREIGN KEY (rubric_id) REFERENCES rr_times.rubrics (id) ON DELETE CASCADE,
+ FOREIGN KEY (translated_article_id) REFERENCES rr_times.translated_articles (id) ON DELETE CASCADE
+);
diff --git a/graphs/sql/daily_gazette/req05.sql b/graphs/sql/daily_gazette/req05.sql
new file mode 100644
index 0000000..da15caa
--- /dev/null
+++ b/graphs/sql/daily_gazette/req05.sql
@@ -0,0 +1,2 @@
+ALTER TABLE rr_times.translated_articles ADD UNIQUE (title);
+ALTER TABLE rr_times.rubrics ADD CHECK (nb_columns >= 0);