| Contents Up Previous | |
The relations between yatish tables are best described with a graph:

In the graph above, primary keys are underlined and foreign keys are written in italics.
SQL foreign key constraints are rather strictly applied:
Yatish tables are prefixed with yatish_: it is possible to share a database with other applications.
The sync field exists only in the (local) SQLite database:
| S | (synchronized) | the record has been inserted/updated in the (remote) MySQL table |
| I | (inserted) | the record was inserted locally but not yet in the remote table |
| U | (updated) | the record was modified locally and needs to be updated in the remote table |
| D | (deleted) | the record has been deleted locally and but not yet in the remote table |
File/Update, if successful, will bring all SQLite sync values do S.
The SQL code used to create the local tables is listed here for reference:
CREATE TABLE yatish_client (
id INTEGER,
name TEXT NOT NULL UNIQUE,
sync CHAR NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE yatish_project (
id INTEGER,
name TEXT NOT NULL UNIQUE,
client_id INT NOT NULL,
sync CHAR NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (client_id) REFERENCES yatish_client (id)
ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE yatish_task (
id INTEGER,
name TEXT NOT NULL UNIQUE,
sync CHAR NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE yatish_tool (
id INTEGER,
name TEXT NOT NULL UNIQUE,
sync CHAR NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE yatish_activity (
id INTEGER,
project_id INT NOT NULL,
task_id INT NOT NULL,
tool_id INT NOT NULL,
sync CHAR NOT NULL,
PRIMARY KEY (id),
UNIQUE (project_id,task_id,tool_id),
FOREIGN KEY (project_id) REFERENCES yatish_project (id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (task_id) REFERENCES yatish_task (id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (tool_id) REFERENCES yatish_tool (id)
ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE yatish_timeslot (
id INTEGER,
start TEXT,
stop TEXT,
activity_id INT NOT NULL,
sync CHAR NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (activity_id) REFERENCES yatish_activity (id)
ON DELETE CASCADE ON UPDATE CASCADE
);