CREATE TABLE IF NOT EXISTS V
(
id INTEGER PRIMARY KEY,
value TEXT NOT NULL UNIQUE,
count INTEGER DEFAULT(0)
)
CREATE TABLE IF NOT EXISTS C
(
id INTEGER PRIMARY KEY,
v INTEGER NOT NULL UNIQUE,
FOREIGN KEY(v) REFERENCES V(id)
)
CREATE TABLE IF NOT EXISTS R
(
id INTEGER PRIMARY KEY,
v INTEGER NOT NULL UNIQUE,
FOREIGN KEY(v) REFERENCES V(id)
)
CREATE TABLE IF NOT EXISTS RC
(
id INTEGER PRIMARY KEY,
r INTEGER NOT NULL,
cf INTEGER NOT NULL,
ct INTEGER NOT NULL,
FOREIGN KEY(r) REFERENCES R(id),
FOREIGN KEY(cf) REFERENCES C(id),
FOREIGN KEY(ct) REFERENCES C(id),
UNIQUE(r, cf, ct)
)
CREATE TABLE IF NOT EXISTS O
(
id INTEGER PRIMARY KEY,
flag INTEGER DEFAULT(0),
v INTEGER NOT NULL UNIQUE,
FOREIGN KEY(v) REFERENCES V(id)
)
CREATE TABLE IF NOT EXISTS CO
(
id INTEGER PRIMARY KEY,
c INTEGER NOT NULL,
o INTEGER NOT NULL,
FOREIGN KEY(c) REFERENCES C(id),
FOREIGN KEY(o) REFERENCES O(id),
UNIQUE(c, o)
)
CREATE TABLE IF NOT EXISTS RCO
(
id INTEGER PRIMARY KEY,
rc INTEGER NOT NULL,
of INTEGER NOT NULL,
ot INTEGER NOT NULL,
FOREIGN KEY(rc) REFERENCES RC(id),
FOREIGN KEY(of) REFERENCES O(id),
FOREIGN KEY(ot) REFERENCES O(id),
UNIQUE(rc, of, ot)
)
CREATE TABLE IF NOT EXISTS A
(
id INTEGER PRIMARY KEY,
v INTEGER NOT NULL UNIQUE,
FOREIGN KEY(v) REFERENCES V(id)
)
CREATE TABLE IF NOT EXISTS AC
(
id INTEGER PRIMARY KEY,
c INTEGER NOT NULL,
a INTEGER NOT NULL,
v INTEGER NOT NULL,
FOREIGN KEY(c) REFERENCES C(id),
FOREIGN KEY(a) REFERENCES A(id),
FOREIGN KEY(v) REFERENCES V(id),
UNIQUE(c, a)
)
CREATE TABLE IF NOT EXISTS AR
(
id INTEGER PRIMARY KEY,
r INTEGER NOT NULL,
a INTEGER NOT NULL,
v INTEGER NOT NULL,
FOREIGN KEY(r) REFERENCES R(id),
FOREIGN KEY(a) REFERENCES A(id),
FOREIGN KEY(v) REFERENCES V(id),
UNIQUE(r, a)
)
CREATE TABLE IF NOT EXISTS ARC
(
id INTEGER PRIMARY KEY,
rc INTEGER NOT NULL,
a INTEGER NOT NULL,
v INTEGER NOT NULL,
FOREIGN KEY(rc) REFERENCES RC(id),
FOREIGN KEY(a) REFERENCES A(id),
FOREIGN KEY(v) REFERENCES V(id),
UNIQUE(rc, a)
)
CREATE TABLE IF NOT EXISTS ACO
(
id INTEGER PRIMARY KEY,
co INTEGER NOT NULL,
a INTEGER NOT NULL,
v INTEGER NOT NULL,
FOREIGN KEY(co) REFERENCES CO(id),
FOREIGN KEY(a) REFERENCES A(id),
FOREIGN KEY(v) REFERENCES V(id),
UNIQUE(co, a)
)
CREATE TABLE IF NOT EXISTS ARCO
(
id INTEGER PRIMARY KEY,
rco INTEGER NOT NULL,
a INTEGER NOT NULL,
v INTEGER NOT NULL,
FOREIGN KEY(rco) REFERENCES RCO(id),
FOREIGN KEY(a) REFERENCES A(id),
FOREIGN KEY(v) REFERENCES V(id),
UNIQUE(rco, a)
)