Skip to content
Snippets Groups Projects
Commit 63c558e4 authored by Grzegorz Kuboń's avatar Grzegorz Kuboń
Browse files

sql script changed

parent 079422f2
Branches
4 merge requests!10Revert "test if load_default will download dump",!9Merge request,!8Revert "test if load_default will download dump",!7Revert "test if load_default will download dump"
......@@ -63,202 +63,188 @@ _DB_SCHEMA_SCRIPT = u"""
PRAGMA foreign_keys = ON;
-- Metadata table. Used for version number, currently
CREATE TABLE plwn_meta (
name TEXT UNIQUE NOT NULL,
value BLOB
CREATE TABLE "tbl_plwn_meta" (
"name" VARCHAR(255) NOT NULL ,
"value" BLOB NULL
);
-- Tables for constant values
CREATE TABLE pos (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL
CREATE TABLE "tbl_pos" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE verbaspect (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL
CREATE TABLE "tbl_verbaspect" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE emotionmark (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL
CREATE TABLE "tbl_emotionmark" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE emotionname (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_emotionname" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE emotionvaluation (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_emotionvaluation" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE domain (
id INTEGER PRIMARY KEY,
value TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_domain" (
"id" INTEGER NOT NULL ,
"value" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "value" ON "tbl_domain" ("value");
-- Synset only gets one simple table
CREATE TABLE synset (
id INTEGER PRIMARY KEY,
definition TEXT COLLATE locale,
isartificial INTEGER NOT NULL DEFAULT 0
CREATE TABLE "tbl_synset" (
"id" BLOB NOT NULL ,
"legacy_id" INTEGER NULL ,
"definition" TEXT NULL ,
"isartificial" INTEGER NOT NULL DEFAULT '0' ,
PRIMARY KEY ("id")
);
-- Lexical units have several tables, since they have several list-like
-- properties. They also need indexes for lookup.
CREATE TABLE lexicalunit (
id INTEGER PRIMARY KEY,
lemma TEXT NOT NULL COLLATE locale,
pos INTEGER NOT NULL
REFERENCES pos (id),
variant INTEGER NOT NULL,
synset INTEGER NOT NULL
REFERENCES synset (id),
unitindex INTEGER NOT NULL,
definition TEXT COLLATE locale,
domain INTEGER NOT NULL
REFERENCES domain (id),
verbaspect INTEGER
REFERENCES verbaspect (id),
isemotional INTEGER,
emotionmark INTEGER
REFERENCES emotionmark (id),
emotionexample1 TEXT COLLATE locale,
emotionexample2 TEXT COLLATE locale,
UNIQUE (lemma, pos, variant),
-- Also, each unit needs its of place in synset
UNIQUE (synset, unitindex)
CREATE TABLE "tbl_lexicalunit" (
"id" BLOB NOT NULL ,
"legacy_id" INTEGER NULL ,
"lemma" VARCHAR(255) NOT NULL ,
"pos" INTEGER NOT NULL ,
"variant" INTEGER NOT NULL ,
"synset" BLOB NOT NULL ,
"unitindex" INTEGER NOT NULL ,
"definition" TEXT NULL ,
"domain" INTEGER NOT NULL ,
"verbaspect" INTEGER NULL ,
"isemotional" INTEGER NULL ,
"emotionmark" INTEGER NULL ,
"emotionexample1" TEXT NULL ,
"emotionexample2" TEXT NULL ,
PRIMARY KEY ("id")
);
-- lem-pos-var and synset-unitindex indexes (and partial ones) are
-- automatically made because of UNIQUE constraint, but additional indexes
-- need to be created.
CREATE INDEX lex_i_lem_var ON lexicalunit (lemma, variant);
CREATE INDEX lex_i_pos ON lexicalunit (pos);
-- No index for variant itself - it's not an useful use case
CREATE UNIQUE INDEX "lemma" ON "tbl_lexicalunit" ("lemma", "pos", "variant");
CREATE INDEX "lex_i_lem_var" ON "tbl_lexicalunit" ("lemma", "variant");
CREATE INDEX "lex_i_pos" ON "tbl_lexicalunit" ("pos");
CREATE UNIQUE INDEX "synset" ON "tbl_lexicalunit" ("synset", "unitindex");
-- Tables dependant on lexicalunit
CREATE TABLE senseexample (
unitid INTEGER NOT NULL
REFERENCES lexicalunit (id),
example TEXT NOT NULL COLLATE locale,
source TEXT NOT NULL COLLATE locale
CREATE TABLE "tbl_senseexample" (
"unitid" BLOB NOT NULL ,
"example" TEXT NOT NULL ,
"source" TEXT NOT NULL
);
CREATE INDEX sen_i ON senseexample (unitid);
CREATE INDEX "sen_i" ON "tbl_senseexample" ("unitid");
CREATE TABLE externallink (
unitid INTEGER NOT NULL
REFERENCES lexicalunit (id),
link TEXT NOT NULL COLLATE locale
CREATE TABLE "tbl_externallink" (
"unitid" BLOB NOT NULL ,
"link" TEXT NOT NULL
);
CREATE INDEX link_i ON externallink (unitid);
CREATE INDEX "link_i" ON "tbl_externallink" ("unitid");
CREATE TABLE usagenote (
unitid INTEGER NOT NULL
REFERENCES lexicalunit (id),
note TEXT NOT NULL COLLATE locale
CREATE TABLE "tbl_usagenote" (
"unitid" BLOB NOT NULL ,
"note" TEXT NOT NULL
);
CREATE INDEX note_i ON usagenote (unitid);
CREATE TABLE unitemotionname (
unitid INTEGER NOT NULL
REFERENCES lexicalunit (id),
nameid INTEGER NOT NULL
REFERENCES emotionname (id),
CREATE INDEX "note_i" ON "tbl_usagenote" ("unitid");
PRIMARY KEY (unitid, nameid)
CREATE TABLE "tbl_unitemotionname" (
"unitid" BLOB NOT NULL ,
"nameid" INTEGER NOT NULL ,
PRIMARY KEY ("unitid", "nameid")
);
CREATE TABLE unitemotionvaluation (
unitid INTEGER NOT NULL
REFERENCES lexicalunit (id),
valuationid INTEGER NOT NULL
REFERENCES emotionvaluation (id),
PRIMARY KEY (unitid, valuationid)
CREATE TABLE "tbl_unitemotionvaluation" (
"unitid" BLOB NOT NULL ,
"valuationid" INTEGER NOT NULL ,
PRIMARY KEY ("unitid", "valuationid")
);
-- Relation tables --
-- The for below are used to gather combinations of parent / child relation
-- names.
CREATE TABLE synsetrelationparentpart (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_synsetrelationparentpart" (
"id" INTEGER NOT NULL ,
"name" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE synsetrelationchildpart (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_synsetrelationchildpart" (
"id" INTEGER NOT NULL ,
"name" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE lexicalrelationparentpart (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_lexicalrelationparentpart" (
"id" INTEGER NOT NULL ,
"name" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE lexicalrelationchildpart (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL COLLATE locale
CREATE TABLE "tbl_lexicalrelationchildpart" (
"id" INTEGER NOT NULL ,
"name" VARCHAR(255) NOT NULL ,
PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "name" ON "tbl_lexicalrelationchildpart" ("name");
CREATE UNIQUE INDEX "parentpart" ON "tbl_lexicalrelationtype" ("parentpart", "childpart");
-- Next, gather these parts into relation types themselves.
-- Parent can't be NULL - the no-parent case will be handled by a special empty
-- string parent. This is so that UNIQUE works correctly.
CREATE TABLE synsetrelationtype (
id INTEGER PRIMARY KEY,
parentpart INTEGER NOT NULL
REFERENCES synsetrelationparentpart (id),
childpart INTEGER NOT NULL
REFERENCES synsetrelationchildpart (id),
UNIQUE (parentpart, childpart)
CREATE TABLE "tbl_synsetrelationtype" (
"id" BLOB NOT NULL ,
"legacy_id" INTEGER NULL ,
"parentpart" INTEGER NOT NULL ,
"childpart" INTEGER NOT NULL ,
PRIMARY KEY ("id")
);
CREATE TABLE lexicalrelationtype (
id INTEGER PRIMARY KEY,
parentpart INTEGER NOT NULL
REFERENCES lexicalrelationparentpart (id),
childpart INTEGER NOT NULL
REFERENCES lexicalrelationchildpart (id),
UNIQUE (parentpart, childpart)
CREATE TABLE "tbl_lexicalrelationtype" (
"id" BLOB NOT NULL ,
"legacy_id" INTEGER NULL ,
"parentpart" INTEGER NOT NULL ,
"childpart" INTEGER NOT NULL ,
PRIMARY KEY ("id")
);
-- The below tables are simply maps of relation aliases to their main IDs.
-- Reverse indexes are needed, too.
CREATE TABLE synsetrelationalias (
name TEXT PRIMARY KEY NOT NULL COLLATE locale,
relationid INTEGER NOT NULL
REFERENCES synsetrelationtype (id)
CREATE TABLE "tbl_synsetrelationalias" (
"name" VARCHAR(255) NOT NULL ,
"relationid" BLOB NOT NULL ,
PRIMARY KEY ("name")
);
CREATE INDEX synsetrelationalias_irev ON synsetrelationalias (relationid);
CREATE TABLE lexicalrelationalias (
name TEXT PRIMARY KEY NOT NULL COLLATE locale,
relationid INTEGER NOT NULL
REFERENCES lexicalrelationtype (id)
CREATE INDEX "synsetrelationalias_irev" ON "tbl_synsetrelationalias" ("relationid");
CREATE TABLE "tbl_lexicalrelationalias" (
"name" VARCHAR(255) NOT NULL ,
"relationid" BLOB NOT NULL ,
PRIMARY KEY ("name")
);
CREATE INDEX lexicalrelationalias_irev ON lexicalrelationalias (relationid);
CREATE INDEX "lexicalrelationalias_irev" ON "tbl_lexicalrelationalias" ("relationid");
-- Next are finally the relation instances
CREATE TABLE synsetrelation (
source INTEGER NOT NULL
REFERENCES synset (id),
relationtype INTEGER NOT NULL
REFERENCES synsetrelationtype (id),
target INTEGER NOT NULL
REFERENCES synset (id),
PRIMARY KEY (source, relationtype, target)
CREATE TABLE "tbl_synsetrelation" (
"source" BLOB NOT NULL ,
"relationtype" BLOB NOT NULL ,
"target" BLOB NOT NULL ,
PRIMARY KEY ("source", "relationtype", "target")
);
CREATE TABLE lexicalrelation (
source INTEGER NOT NULL
REFERENCES lexicalunit (id),
relationtype INTEGER NOT NULL
REFERENCES lexicalrelationtype (id),
target INTEGER NOT NULL
REFERENCES lexicalunit (id),
PRIMARY KEY (source, relationtype, target)
CREATE TABLE "tbl_lexicalrelation" (
"source" BLOB NOT NULL ,
"relationtype" BLOB NOT NULL ,
"target" BLOB NOT NULL ,
PRIMARY KEY ("source", "relationtype", "target")
);
-- Insert the special empty values for the parent part tables
......@@ -267,24 +253,24 @@ INSERT INTO lexicalrelationparentpart (name) VALUES ('');
""" # }}}
_RELTYPE_TABLES = {
en.RelationKind.synset: u'synsetrelationtype',
en.RelationKind.lexical: u'lexicalrelationtype',
en.RelationKind.synset: u'tbl_synsetrelationtype',
en.RelationKind.lexical: u'tbl_lexicalrelationtype',
}
_RELALIAS_TABLES = {
en.RelationKind.synset: u'synsetrelationalias',
en.RelationKind.lexical: u'lexicalrelationalias',
en.RelationKind.synset: u'tbl_synsetrelationalias',
en.RelationKind.lexical: u'tbl_lexicalrelationalias',
}
_RELPARENTPART_TABLES = {
en.RelationKind.synset: u'synsetrelationparentpart',
en.RelationKind.lexical: u'lexicalrelationparentpart',
en.RelationKind.synset: u'tbl_synsetrelationparentpart',
en.RelationKind.lexical: u'tbl_lexicalrelationparentpart',
}
_RELCHILDPART_TABLES = {
en.RelationKind.synset: u'synsetrelationchildpart',
en.RelationKind.lexical: u'lexicalrelationchildpart',
en.RelationKind.synset: u'tbl_synsetrelationchildpart',
en.RelationKind.lexical: u'tbl_lexicalrelationchildpart',
}
_RELINST_TABLES = {
en.RelationKind.synset: u'synsetrelation',
en.RelationKind.lexical: u'lexicalrelation',
en.RelationKind.synset: u'tbl_synsetrelation',
en.RelationKind.lexical: u'tbl_lexicalrelation',
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment