-
Notifications
You must be signed in to change notification settings - Fork 0
/
manadram.sql
140 lines (130 loc) · 6.24 KB
/
manadram.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
PRAGMA encoding = 'UTF-8';
PRAGMA page_size = 8192; -- blob optimisation https://www.sqlite.org/intern-v-extern-blob.html
PRAGMA foreign_keys = ON;
-- The VACUUM command may change the ROWIDs of entries in any tables that do not have an explicit INTEGER PRIMARY KEY
DROP TABLE IF EXISTS play;
DROP TABLE IF EXISTS stats;
DROP TABLE IF EXISTS pattern;
DROP TABLE IF EXISTS configuration;
DROP TABLE IF EXISTS role;
CREATE TABLE play (
-- une pièce
id INTEGER, -- rowid auto
code TEXT, -- nom de fichier sans extension, unique pour la base
author TEXT, -- auteur
title TEXT, -- titre
genre TEXT, -- nom de genre
created INTEGER, -- année de création
lustrum TEXT, -- lustre de création
html TEXT, -- html du tableau d'occupation scénique
filemtime INTEGER, -- date de dernière modification du fichier pour update
publisher TEXT, -- URL de la source XML
identifier TEXT, -- URL du site de référence
source TEXT, -- URL du TEI
date INTEGER, -- année pertinente
issued INTEGER, -- année de publication
roles INTEGER, -- nombre de personnages en tout
speakers INTEGER, -- nombre de personnages parlants
croles INTEGER, -- presence totale de tous les personnage en nombre de signes
cspeakers INTEGER, -- présence totale des personnages parlants (Σ configuration(c*speakers))
acts INTEGER, -- nombre d’actes, essentiellement 5, 3, 1 ; ajuster pour les prologues
scenes INTEGER, -- nombre de scènes
confs INTEGER, -- nombre de scènes
verse BOOLEAN, -- uniquement si majoritairement en vers, ne pas cocher si chanson mêlée à de la prose
type TEXT, -- comedy|tragedy (terme normalisé)
c INTEGER, -- <c> (char) taille en caractères
w INTEGER, -- <w> (word) taille en mots
l INTEGER, -- <l> taille en vers
sp INTEGER, -- <sp> taille en répliques
PRIMARY KEY(id ASC)
);
CREATE UNIQUE INDEX play_id ON play(id);
CREATE INDEX created ON play(created);
CREATE INDEX code ON play(code);
CREATE INDEX author ON play(author);
CREATE INDEX genre ON play(genre);
CREATE TABLE stats(
id INTEGER,
play_id INTEGER REFERENCES play(id),
l INTEGER, -- taille des motifs
c INTEGER, -- 1 ou 0, le motif prend ou non en compte les confidents
g INTEGER, -- 1 ou 0, le motif regroupe ou non les personnages
value INTEGER, -- nombre de motifs
PRIMARY KEY(id ASC)
);
CREATE INDEX stats_play_id_l_c_g ON stats(play_id, l, c, g);
CREATE TABLE pattern (
id INTEGER,
play_id INTEGER REFERENCES play(id), -- PRENDRE L'ID NUMERIQUE (REFERENCES play(id))
code TEXT,
act_n INTEGER, -- numéro de l'acte
scene_n INTEGER, -- numéro de la première scène du motif (PB SI JE PRENDS LES CONFIGURATIONS)
scene_id TEXT,
conf_id TEXT,
int_dec INTEGER, -- motif en décimal (PB DU FLOAT)
int_bin TEXT, -- motif en binaire
str_code TEXT, -- motif codifié A/AB
str_id TEXT, -- motif avec les id des personnages
str_name TEXT, -- motif avec les noms des personnages
occurrences TEXT, --toutes les occurrences du motif dans la pièce
l INTEGER, -- longueur du motif en configurations
c INTEGER, -- 1 ou 0, le motif prend ou non en compte les confidents
g INTEGER, -- 1 ou 0, le motif regroupe ou non les personnages
PRIMARY KEY(id ASC)
);
CREATE INDEX pattern_str_code_l_c_g ON pattern(str_code,l,c,g);
CREATE TABLE configuration (
-- une configuration est un état de la scène (personnages présents)
id INTEGER, -- rowid auto
play INTEGER REFERENCES play(id),-- id pièce
act INTEGER REFERENCES act(id), -- id acte
scene INTEGER REFERENCES scene(id), -- rowid scène
code TEXT, -- code de conf (= @xml:id)
n INTEGER, -- numéro d’ordre dans la pièce
label TEXT, -- liste de codes de personnage
roles INTEGER, -- nombre de rôles présents
speakers INTEGER, -- nombre de rôles parlants
spn INTEGER, -- numéro de répliques
sp INTEGER, -- <sp> taille en répliques
ln INTEGER, -- numéro du premier vers
l INTEGER, -- <l> taille en vers
wn INTEGER, -- numéro du premier mot
w INTEGER, -- <w> (word) taille en mots
cn INTEGER, -- numéro du premier caractère
c INTEGER, -- <c> (char) taille en caractères
PRIMARY KEY(id ASC)
);
CREATE UNIQUE INDEX configuration_code ON configuration(play, code);
CREATE INDEX configuration_act ON configuration(act);
CREATE TABLE role (
-- un rôle
id INTEGER, -- rowid auto
play INTEGER REFERENCES play(id), -- rowid de pièce
ord INTEGER, -- ordre dans la distribution
code TEXT, -- code personne
label TEXT, -- nom affichable
title TEXT, -- description du rôle (mère de…, amant de…) tel que dans la source
note TEXT, -- possibilité de description plus étendue
rend TEXT, -- série de mots clés séparés d’espaces (male|female)? (cadet)
sex INTEGER, -- 1: homme, 2: femme, null: ?, 0: asexué, 9: dieu, ISO 5218:2004
age TEXT, -- (cadet|junior|senior|veteran)
status TEXT, -- pour isoler les confidents, serviteurs, ou pédants
targets INTEGER, -- nombre de destinataires
sources INTEGER, -- nombre d’émetteurs
c INTEGER, -- out <c>, mombre de caractères dits
w INTEGER, -- out <w>, mombre de mots dits
l INTEGER, -- out <l>, nombre de vers dits
sp INTEGER, -- out <sp>, nombre de répliques dites
confs INTEGER, -- nombre de configurations
confspeak INTEGER, -- nombre de configurations où le personnage parle
entries INTEGER, -- nombre d’entrées en scène (TODO)
presence INTEGER, -- temps de présence (en caractères)
participation INTEGER, -- temps de participation, scènes où le personnage parle (en caractères)
croles INTEGER, -- presence totale de tous les personnage en nombre de signes
cspeakers INTEGER, -- nombre de personnages parlants durant les scènes où
PRIMARY KEY(id ASC)
);
CREATE UNIQUE INDEX role_who ON role(play, code);
CREATE UNIQUE INDEX role_ord ON role(play, ord);
CREATE INDEX role_c ON role(c);
CREATE INDEX role_presence ON role(presence);