BEGIN TRANSACTION; CREATE TABLE Users ( UserID INTEGER UNIQUE, LoginName VARCHAR UNIQUE, Password VARCHAR, IsAdmin BOOLEAN ); CREATE TABLE Types ( TypeID INTEGER PRIMARY KEY, Name VARCHAR UNIQUE ); CREATE TABLE Attributes ( AttributeID INTEGER PRIMARY KEY, Name VARCHAR UNIQUE ); CREATE TABLE Records ( RecordID INTEGER PRIMARY KEY AUTOINCREMENT, TypeID INTEGER, Key VARCHAR, ParentID INTEGER, UserID INTEGER CHECK (((ParentID IS NULL) AND (UserID IS NULL)) OR ((ParentID IS NOT NULL) AND (UserID IS NOT NULL))), FOREIGN KEY ( TypeID ) REFERENCES Types ( TypeID ), FOREIGN KEY ( ParentID ) REFERENCES Records ( RecordID ), FOREIGN KEY ( UserID ) REFERENCES Users ( UserID ) ); CREATE TABLE Entries ( EntryID INTEGER PRIMARY KEY, RecordID INTEGER, AttributeID INTEGER, Content VARCHAR, FOREIGN KEY ( RecordID ) REFERENCES Records ( RecordID ), FOREIGN KEY ( AttributeID ) REFERENCES Attributes ( AttributeID ) ); COMMIT TRANSACTION;