root/mb_server/trunk/admin/sql/CreateTables.sql

Revision 10196, 33.5 kB (checked in by murdos, 3 weeks ago)

Introduces entities _meta tables, currently only holding lastupdate info.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 \set ON_ERROR_STOP 1
2 BEGIN;
3
4 -- A quick crib sheet: when adding a table to the system, quite a few files
5 -- will need modification.  This isn't a complete list, but should serve as a
6 -- handy reminder as to most of the files involved:
7 --   admin/sql/(Create|Drop)Tables.sql
8 --   admin/sql/(Create|Drop)PrimaryKeys.sql
9 --   admin/sql/(Create|Drop)Indexes.sql
10 --   admin/sql/(Create|Drop)FKConstraints.sql
11 --   admin/sql/(Create|Drop)ReplicationTriggers.sql
12 --   admin/SetSequences.pl
13 --   admin/ExportAllTables
14 --   admin/MBImport.pl
15 --   admin/replication/LoadReplicationChanges (if not replicated)
16
17 -- Add tables in alphabetical order please!
18
19 CREATE TABLE album
20 (
21     id                  SERIAL,
22     artist              INTEGER NOT NULL, -- references artist
23     name                VARCHAR(255) NOT NULL,
24     gid                 CHAR(36) NOT NULL,
25     modpending          INTEGER DEFAULT 0,
26     attributes          INTEGER[] DEFAULT '{0}',
27     page                INTEGER NOT NULL,
28     language            INTEGER, -- references language
29     script              INTEGER, -- references script
30     modpending_lang     INTEGER,
31     quality             SMALLINT DEFAULT -1,
32     modpending_qual     INTEGER DEFAULT 0
33 );
34
35 CREATE TABLE album_amazon_asin
36 (
37     album               INTEGER NOT NULL, -- references album
38     asin                CHAR(10),
39     coverarturl         VARCHAR(255),
40     lastupdate          TIMESTAMP WITH TIME ZONE DEFAULT NOW()
41 );
42
43 CREATE TABLE album_cdtoc
44 (
45     id                  SERIAL,
46     album               INTEGER NOT NULL,
47     cdtoc               INTEGER NOT NULL,
48     modpending          INTEGER NOT NULL DEFAULT 0
49 );
50
51 CREATE TABLE albumjoin
52 (
53     id                  SERIAL,
54     album               INTEGER NOT NULL, -- references album
55     track               INTEGER NOT NULL, -- references track
56     sequence            INTEGER NOT NULL,
57     modpending          INTEGER DEFAULT 0
58 );
59
60 CREATE TABLE albummeta
61 (
62     id                  INTEGER NOT NULL,
63     tracks              INTEGER DEFAULT 0,
64     discids             INTEGER DEFAULT 0,
65     puids               INTEGER DEFAULT 0,
66     firstreleasedate    CHAR(10),
67     asin                CHAR(10),
68     coverarturl         VARCHAR(255),
69     lastupdate          TIMESTAMP WITH TIME ZONE DEFAULT NOW()
70 );
71
72 CREATE TABLE albumwords
73 (
74     wordid              INTEGER NOT NULL,
75     albumid             INTEGER NOT NULL
76 );
77
78 CREATE TABLE annotation
79 (
80     id                  SERIAL,
81     moderator           INTEGER NOT NULL, -- references moderator
82     type                SMALLINT NOT NULL,
83     rowid               INTEGER NOT NULL, -- conditional reference
84     text                TEXT,
85     changelog           VARCHAR(255),
86     created             TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
87     moderation          INTEGER NOT NULL DEFAULT 0,
88     modpending          INTEGER NOT NULL DEFAULT 0
89 );
90
91 CREATE TABLE artist
92 (
93     id                  SERIAL,
94     name                VARCHAR(255) NOT NULL,
95     gid                 CHAR(36) NOT NULL,
96     modpending          INTEGER DEFAULT 0,
97     sortname            VARCHAR(255) NOT NULL,
98     page                INTEGER NOT NULL,
99     resolution          VARCHAR(64),
100     begindate           CHAR(10),
101     enddate             CHAR(10),
102     type                SMALLINT,
103     quality             SMALLINT DEFAULT -1,
104     modpending_qual     INTEGER DEFAULT 0
105 );
106
107 CREATE TABLE artist_meta
108 (
109     id          INTEGER NOT NULL,
110     lastupdate  TIMESTAMP WITH TIME ZONE DEFAULT NOW()
111 );
112
113 CREATE TABLE artistalias
114 (
115     id                  SERIAL,
116     ref                 INTEGER NOT NULL, -- references artist
117     name                VARCHAR(255) NOT NULL,
118     timesused           INTEGER DEFAULT 0,
119     modpending          INTEGER DEFAULT 0,
120     lastused            TIMESTAMP WITH TIME ZONE
121 );
122
123 CREATE TABLE artist_relation
124 (
125     id                  SERIAL,
126     artist              INTEGER NOT NULL, -- references artist
127     ref                 INTEGER NOT NULL, -- references artist
128     weight              INTEGER NOT NULL
129 );
130
131 CREATE TABLE artist_tag
132 (
133      artist              INTEGER NOT NULL,
134      tag                 INTEGER NOT NULL,
135      count               INTEGER NOT NULL
136 );
137
138 CREATE TABLE artistwords
139 (
140     wordid              INTEGER NOT NULL,
141     artistid            INTEGER NOT NULL
142 );
143
144 CREATE TABLE labelwords
145 (
146     wordid              INTEGER NOT NULL,
147     labelid            INTEGER NOT NULL
148 );
149
150 CREATE TABLE automod_election
151 (
152     id                  SERIAL,
153     candidate           INTEGER NOT NULL,
154     proposer            INTEGER NOT NULL,
155     seconder_1          INTEGER,
156     seconder_2          INTEGER,
157     status              INTEGER NOT NULL DEFAULT 1
158         CONSTRAINT automod_election_chk1 CHECK (status IN (1,2,3,4,5,6)),
159         -- 1 : has proposer
160         -- 2 : has seconder_1
161         -- 3 : has seconder_2 (voting open)
162         -- 4 : accepted!
163         -- 5 : rejected
164         -- 6 : cancelled (by proposer)
165     yesvotes            INTEGER NOT NULL DEFAULT 0,
166     novotes             INTEGER NOT NULL DEFAULT 0,
167     proposetime         TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
168     opentime            TIMESTAMP WITH TIME ZONE,
169     closetime           TIMESTAMP WITH TIME ZONE
170 );
171
172 CREATE TABLE automod_election_vote
173 (
174     id                  SERIAL,
175     automod_election    INTEGER NOT NULL,
176     voter               INTEGER NOT NULL,
177     vote                INTEGER NOT NULL,
178         CONSTRAINT automod_election_vote_chk1 CHECK (vote IN (-1,0,1)),
179     votetime            TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
180 );
181
182 CREATE TABLE cdtoc
183 (
184     id                  SERIAL,
185     discid              CHAR(28) NOT NULL,
186     freedbid            CHAR(8) NOT NULL,
187     trackcount          INTEGER NOT NULL,
188     leadoutoffset       INTEGER NOT NULL,
189     trackoffset         INTEGER[] NOT NULL,
190     degraded            BOOLEAN NOT NULL DEFAULT FALSE
191 );
192
193 CREATE TABLE clientversion
194 (
195     id                  SERIAL,
196     version             VARCHAR(64) NOT NULL
197 );
198
199 CREATE TABLE country
200 (
201     id                  SERIAL,
202     isocode             VARCHAR(2) NOT NULL,
203     name                VARCHAR(100) NOT NULL
204 );
205
206 CREATE TABLE currentstat
207 (
208     id                  SERIAL,
209     name                VARCHAR(100) NOT NULL,
210     value               INTEGER NOT NULL,
211     lastupdated         TIMESTAMP WITH TIME ZONE
212 );
213
214 CREATE TABLE historicalstat
215 (
216     id                  SERIAL,
217     name                VARCHAR(100) NOT NULL,
218     value               INTEGER NOT NULL,
219     snapshotdate        DATE NOT NULL
220 );
221
222 CREATE TABLE label
223 (
224     id                  SERIAL,
225     name                VARCHAR(255) NOT NULL,
226     gid                 CHAR(36) NOT NULL,
227     modpending          INTEGER DEFAULT 0,
228     labelcode           INTEGER,
229     sortname            VARCHAR(255) NOT NULL,
230     country             INTEGER, -- references country
231     page                INTEGER NOT NULL,
232     resolution          VARCHAR(64),
233     begindate           CHAR(10),
234     enddate             CHAR(10),
235     type                SMALLINT
236 );
237
238 CREATE TABLE label_meta
239 (
240     id          INTEGER NOT NULL,
241     lastupdate  TIMESTAMP WITH TIME ZONE DEFAULT NOW()
242 );
243
244 CREATE TABLE label_tag
245 (
246     label               INTEGER NOT NULL,
247     tag                 INTEGER NOT NULL,
248     count               INTEGER NOT NULL
249 );
250
251 CREATE TABLE gid_redirect
252 (
253     gid                 CHAR(36) NOT NULL,
254     newid               INTEGER NOT NULL,
255     tbl                 SMALLINT NOT NULL
256 );
257
258 CREATE TABLE l_album_album
259 (
260     id                  SERIAL,
261     link0               INTEGER NOT NULL DEFAULT 0, -- references album
262     link1               INTEGER NOT NULL DEFAULT 0, -- references album
263     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_album_album
264     begindate           CHAR(10) DEFAULT NULL,
265     enddate             CHAR(10) DEFAULT NULL,
266     modpending          INTEGER NOT NULL DEFAULT 0
267 );
268
269 CREATE TABLE l_album_artist
270 (
271     id                  SERIAL,
272     link0               INTEGER NOT NULL DEFAULT 0, -- references album
273     link1               INTEGER NOT NULL DEFAULT 0, -- references artist
274     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_album_artist
275     begindate           CHAR(10) DEFAULT NULL,
276     enddate             CHAR(10) DEFAULT NULL,
277     modpending          INTEGER NOT NULL DEFAULT 0
278 );
279
280 CREATE TABLE l_album_label
281 (
282     id                  SERIAL,
283     link0               INTEGER NOT NULL DEFAULT 0, -- references album
284     link1               INTEGER NOT NULL DEFAULT 0, -- references label
285     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_album_label
286     begindate           CHAR(10) DEFAULT NULL,
287     enddate             CHAR(10) DEFAULT NULL,
288     modpending          INTEGER NOT NULL DEFAULT 0
289 );
290
291 CREATE TABLE l_album_track
292 (
293     id                  SERIAL,
294     link0               INTEGER NOT NULL DEFAULT 0, -- references album
295     link1               INTEGER NOT NULL DEFAULT 0, -- references track
296     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_album_track
297     begindate           CHAR(10) DEFAULT NULL,
298     enddate             CHAR(10) DEFAULT NULL,
299     modpending          INTEGER NOT NULL DEFAULT 0
300 );
301
302 CREATE TABLE l_album_url
303 (
304     id                  SERIAL,
305     link0               INTEGER NOT NULL DEFAULT 0, -- references album
306     link1               INTEGER NOT NULL DEFAULT 0, -- references url
307     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_album_url
308     begindate           CHAR(10) DEFAULT NULL,
309     enddate             CHAR(10) DEFAULT NULL,
310     modpending          INTEGER NOT NULL DEFAULT 0
311 );
312
313 CREATE TABLE l_artist_artist
314 (
315     id                  SERIAL,
316     link0               INTEGER NOT NULL DEFAULT 0, -- references artist
317     link1               INTEGER NOT NULL DEFAULT 0, -- references artist
318     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_artist_artist
319     begindate           CHAR(10) DEFAULT NULL,
320     enddate             CHAR(10) DEFAULT NULL,
321     modpending          INTEGER NOT NULL DEFAULT 0
322 );
323
324 CREATE TABLE l_artist_label
325 (
326     id                  SERIAL,
327     link0               INTEGER NOT NULL DEFAULT 0, -- references artist
328     link1               INTEGER NOT NULL DEFAULT 0, -- references label
329     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_artist_label
330     begindate           CHAR(10) DEFAULT NULL,
331     enddate             CHAR(10) DEFAULT NULL,
332     modpending          INTEGER NOT NULL DEFAULT 0
333 );
334
335 CREATE TABLE l_artist_track
336 (
337     id                  SERIAL,
338     link0               INTEGER NOT NULL DEFAULT 0, -- references artist
339     link1               INTEGER NOT NULL DEFAULT 0, -- references track
340     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_artist_track
341     begindate           CHAR(10) DEFAULT NULL,
342     enddate             CHAR(10) DEFAULT NULL,
343     modpending          INTEGER NOT NULL DEFAULT 0
344 );
345
346 CREATE TABLE l_artist_url
347 (
348     id                  SERIAL,
349     link0               INTEGER NOT NULL DEFAULT 0, -- references artist
350     link1               INTEGER NOT NULL DEFAULT 0, -- references url
351     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_artist_url
352     begindate           CHAR(10) DEFAULT NULL,
353     enddate             CHAR(10) DEFAULT NULL,
354     modpending          INTEGER NOT NULL DEFAULT 0
355 );
356
357 CREATE TABLE l_label_label
358 (
359     id                  SERIAL,
360     link0               INTEGER NOT NULL DEFAULT 0, -- references label
361     link1               INTEGER NOT NULL DEFAULT 0, -- references label
362     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_label_label
363     begindate           CHAR(10) DEFAULT NULL,
364     enddate             CHAR(10) DEFAULT NULL,
365     modpending          INTEGER NOT NULL DEFAULT 0
366 );
367
368 CREATE TABLE l_label_track
369 (
370     id                  SERIAL,
371     link0               INTEGER NOT NULL DEFAULT 0, -- references label
372     link1               INTEGER NOT NULL DEFAULT 0, -- references track
373     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_label_track
374     begindate           CHAR(10) DEFAULT NULL,
375     enddate             CHAR(10) DEFAULT NULL,
376     modpending          INTEGER NOT NULL DEFAULT 0
377 );
378
379 CREATE TABLE l_label_url
380 (
381     id                  SERIAL,
382     link0               INTEGER NOT NULL DEFAULT 0, -- references label
383     link1               INTEGER NOT NULL DEFAULT 0, -- references url
384     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_label_url
385     begindate           CHAR(10) DEFAULT NULL,
386     enddate             CHAR(10) DEFAULT NULL,
387     modpending          INTEGER NOT NULL DEFAULT 0
388 );
389
390 CREATE TABLE l_track_track
391 (
392     id                  SERIAL,
393     link0               INTEGER NOT NULL DEFAULT 0, -- references track
394     link1               INTEGER NOT NULL DEFAULT 0, -- references track
395     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_track_track
396     begindate           CHAR(10) DEFAULT NULL,
397     enddate             CHAR(10) DEFAULT NULL,
398     modpending          INTEGER NOT NULL DEFAULT 0
399 );
400
401 CREATE TABLE l_track_url
402 (
403     id                  SERIAL,
404     link0               INTEGER NOT NULL DEFAULT 0, -- references track
405     link1               INTEGER NOT NULL DEFAULT 0, -- references url
406     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_track_url
407     begindate           CHAR(10) DEFAULT NULL,
408     enddate             CHAR(10) DEFAULT NULL,
409     modpending          INTEGER NOT NULL DEFAULT 0
410 );
411
412 CREATE TABLE l_url_url
413 (
414     id                  SERIAL,
415     link0               INTEGER NOT NULL DEFAULT 0, -- references track
416     link1               INTEGER NOT NULL DEFAULT 0, -- references url
417     link_type           INTEGER NOT NULL DEFAULT 0, -- references lt_track_url
418     begindate           CHAR(10) DEFAULT NULL,
419     enddate             CHAR(10) DEFAULT NULL,
420     modpending          INTEGER NOT NULL DEFAULT 0
421 );
422
423 CREATE TABLE labelalias
424 (
425     id                  SERIAL,
426     ref                 INTEGER NOT NULL, -- references label
427     name                VARCHAR(255) NOT NULL,
428     timesused           INTEGER DEFAULT 0,
429     modpending          INTEGER DEFAULT 0,
430     lastused            TIMESTAMP WITH TIME ZONE
431 );
432
433 CREATE TABLE language
434 (
435      id                 SERIAL,
436      isocode_3t         CHAR(3) NOT NULL, -- ISO 639-2 (T)
437      isocode_3b         CHAR(3) NOT NULL, -- ISO 639-2 (B)
438      isocode_2          CHAR(2), -- ISO 639
439      name               VARCHAR(100) NOT NULL,
440      french_name        VARCHAR(100) NOT NULL,
441      frequency          INTEGER NOT NULL DEFAULT 0
442 );
443
444 CREATE TABLE link_attribute
445 (
446     id                  SERIAL,
447     attribute_type      INTEGER NOT NULL DEFAULT 0, -- references link_attribute_type
448     link                INTEGER NOT NULL DEFAULT 0, -- references l_<ent>_<ent> without FK
449     link_type           VARCHAR(32) NOT NULL DEFAULT '' -- indicates which l_ table to refer to
450 );
451
452 CREATE TABLE link_attribute_type
453 (
454     id                  SERIAL,
455     parent              INTEGER NOT NULL, -- references self
456     childorder          INTEGER NOT NULL DEFAULT 0,
457     mbid                CHAR(36) NOT NULL,
458     name                VARCHAR(255) NOT NULL,
459     description         TEXT NOT NULL,
460     modpending          INTEGER NOT NULL DEFAULT 0
461 );
462
463 CREATE TABLE lt_album_album
464 (
465     id                  SERIAL,
466     parent              INTEGER NOT NULL, -- references self
467     childorder          INTEGER NOT NULL DEFAULT 0,
468     mbid                CHAR(36) NOT NULL,
469     name                VARCHAR(255) NOT NULL,
470     description         TEXT NOT NULL,
471     linkphrase          VARCHAR(255) NOT NULL,
472     rlinkphrase         VARCHAR(255) NOT NULL,
473     attribute           VARCHAR(255) DEFAULT '',
474     modpending          INTEGER NOT NULL DEFAULT 0,
475     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
476     priority            INTEGER NOT NULL DEFAULT 0
477 );
478
479 CREATE TABLE lt_album_artist
480 (
481     id                  SERIAL,
482     parent              INTEGER NOT NULL, -- references self
483     childorder          INTEGER NOT NULL DEFAULT 0,
484     mbid                CHAR(36) NOT NULL,
485     name                VARCHAR(255) NOT NULL,
486     description         TEXT NOT NULL,
487     linkphrase          VARCHAR(255) NOT NULL,
488     rlinkphrase         VARCHAR(255) NOT NULL,
489     attribute           VARCHAR(255) DEFAULT '',
490     modpending          INTEGER NOT NULL DEFAULT 0,
491     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
492     priority            INTEGER NOT NULL DEFAULT 0
493 );
494
495 CREATE TABLE lt_album_label
496 (
497     id                  SERIAL,
498     parent              INTEGER NOT NULL, -- references self
499     childorder          INTEGER NOT NULL DEFAULT 0,
500     mbid                CHAR(36) NOT NULL,
501     name                VARCHAR(255) NOT NULL,
502     description         TEXT NOT NULL,
503     linkphrase          VARCHAR(255) NOT NULL,
504     rlinkphrase         VARCHAR(255) NOT NULL,
505     attribute           VARCHAR(255) DEFAULT '',
506     modpending          INTEGER NOT NULL DEFAULT 0,
507     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
508     priority            INTEGER NOT NULL DEFAULT 0
509 );
510
511 CREATE TABLE lt_album_track
512 (
513     id                  SERIAL,
514     parent              INTEGER NOT NULL, -- references self
515     childorder          INTEGER NOT NULL DEFAULT 0,
516     mbid                CHAR(36) NOT NULL,
517     name                VARCHAR(255) NOT NULL,
518     description         TEXT NOT NULL,
519     linkphrase          VARCHAR(255) NOT NULL,
520     rlinkphrase         VARCHAR(255) NOT NULL,
521     attribute           VARCHAR(255) DEFAULT '',
522     modpending          INTEGER NOT NULL DEFAULT 0,
523     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
524     priority            INTEGER NOT NULL DEFAULT 0
525 );
526
527 CREATE TABLE lt_album_url
528 (
529     id                  SERIAL,
530     parent              INTEGER NOT NULL, -- references self
531     childorder          INTEGER NOT NULL DEFAULT 0,
532     mbid                CHAR(36) NOT NULL,
533     name                VARCHAR(255) NOT NULL,
534     description         TEXT NOT NULL,
535     linkphrase          VARCHAR(255) NOT NULL,
536     rlinkphrase         VARCHAR(255) NOT NULL,
537     attribute           VARCHAR(255) DEFAULT '',
538     modpending          INTEGER NOT NULL DEFAULT 0,
539     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
540     priority            INTEGER NOT NULL DEFAULT 0
541 );
542
543 CREATE TABLE lt_artist_artist
544 (
545     id                  SERIAL,
546     parent              INTEGER NOT NULL, -- references self
547     childorder          INTEGER NOT NULL DEFAULT 0,
548     mbid                CHAR(36) NOT NULL,
549     name                VARCHAR(255) NOT NULL,
550     description         TEXT NOT NULL,
551     linkphrase          VARCHAR(255) NOT NULL,
552     rlinkphrase         VARCHAR(255) NOT NULL,
553     attribute           VARCHAR(255) DEFAULT '',
554     modpending          INTEGER NOT NULL DEFAULT 0,
555     shortlinkphrase     VARCHAR(255) NOT NULL DEFAULT '',
556     priority            INTEGER NOT NULL DEFAULT 0
557 );
558
559 CREATE TABLE lt_artist_label
560 (
561     id                  SERIAL,
562     parent              INTEGER NOT NULL, -- references self
563     childorder          INTEGER NOT NULL DEFAULT 0,
564     mbid                CHAR(36) NOT NULL,
565     name                VARCHAR(255) NOT NULL,
566     description         TEXT NOT NULL,
567     linkphrase          VARCHAR(255) NOT NULL,
568     rlinkphrase         VARCHAR