Project

General

Profile

1 49820 michele.ar
CREATE TABLE persons (
2
	id       varchar(32) PRIMARY KEY,
3 60657 michele.ar
	name     varchar(256) NOT NULL,
4
	surname  varchar(256) NOT NULL,
5
	suffix   varchar(256)
6 49820 michele.ar
);
7
8
CREATE TABLE groups (
9
	id   varchar(16) PRIMARY KEY,
10
	name varchar(256) NOT NULL,
11 50621 michele.ar
	type varchar(32)
12 49820 michele.ar
);
13
14
CREATE TABLE affiliations (
15
	pid varchar(32) REFERENCES persons(id),
16
	gid varchar(16) REFERENCES groups(id),
17
	year   int,
18 61899 michele.ar
	PRIMARY KEY (pid, gid, year),
19
	FOREIGN KEY (pid) REFERENCES persons(id),
20
	FOREIGN KEY (gid) REFERENCES groups(id)
21 49820 michele.ar
);
22 50023 michele.ar
23 50634 michele.ar
INSERT INTO groups(id, name, type) VALUES ('UNKNOWN', 'UNKNOWN', 'UNKNOWN');
24
25 60657 michele.ar
CREATE VIEW affiliations_view AS SELECT
26
	p.id                                                               as pid,
27
	TRIM(CONCAT(p.surname, ", ", p.name, " ", COALESCE(p.suffix, ''))) as pfullname,
28
	g.id                                                               as gid,
29
	g.name                                                             as gname,
30
	g.type                                                             as gtype,
31
	a.year                                                             as year
32 50023 michele.ar
FROM
33
	persons p
34 61881 michele.ar
	JOIN affiliations a ON (p.id = a.pid)
35
	JOIN       groups g ON (a.gid = g.id);