From 7db177d7f0dbaaf6daa63b5f59184eacaf19c2e2 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Mon, 1 Oct 2007 23:15:14 +0000 Subject: [PATCH] Updated schema to use "INTEGER PRIMARY KEY" for all applicable rows -- for clarity, I wasn't using it for tables that weren't using autoincrement functionality, but not using it keeps SQLite from just making that column name an alias for the internal rowid column, resulting in an extra unnecessary column. Can't update existing tables now, but may in 1.5. (Refs #779, Update tables created without "INTEGER PRIMARY KEY") --- userdata.sql | 55 +++++++++++++++++++++------------------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/userdata.sql b/userdata.sql index 3384ed329..5cad79f22 100644 --- a/userdata.sql +++ b/userdata.sql @@ -29,24 +29,22 @@ CREATE TABLE IF NOT EXISTS userFieldMask ( -- User-defined item types -- itemTypeIDs must be >= 1000 CREATE TABLE IF NOT EXISTS userItemTypes ( - itemTypeID INT, + itemTypeID INTEGER PRIMARY KEY, typeName TEXT, - templateItemTypeID INT, - PRIMARY KEY (itemTypeID) + templateItemTypeID INT ); -- Control visibility and placement of system and user item types CREATE TABLE IF NOT EXISTS userItemTypeMask ( - itemTypeID INT, + itemTypeID INTEGER PRIMARY KEY, display INT, -- 0 == hide, 1 == show, 2 == primary - PRIMARY KEY (itemTypeID) + FOREIGN KEY (itemTypeID) REFERENCES userItemTypes(itemTypeID) ); -- User-defined fields CREATE TABLE IF NOT EXISTS userFields ( - userFieldID INT, - fieldName TEXT, - PRIMARY KEY (userFieldID) + userFieldID INTEGER PRIMARY KEY, + fieldName TEXT ); -- Map custom fields to system and custom item types @@ -66,6 +64,11 @@ CREATE TABLE IF NOT EXISTS items ( dateModified DATETIME DEFAULT CURRENT_TIMESTAMP ); +CREATE TABLE IF NOT EXISTS itemDataValues ( + valueID INTEGER PRIMARY KEY, + value +); + -- Type-specific data for individual items -- -- Triggers specified in schema.js due to lack of trigger IF [NOT] EXISTS in Firefox 2.0 @@ -79,40 +82,31 @@ CREATE TABLE IF NOT EXISTS itemData ( FOREIGN KEY (valueID) REFERENCES itemDataValues(valueID) ); -CREATE TABLE IF NOT EXISTS itemDataValues ( - valueID INT, - value, - PRIMARY KEY (valueID) -); - -- Note data for note items CREATE TABLE IF NOT EXISTS itemNotes ( - itemID INT, + itemID INTEGER PRIMARY KEY, sourceItemID INT, note TEXT, - PRIMARY KEY (itemID), FOREIGN KEY (itemID) REFERENCES items(itemID), FOREIGN KEY (sourceItemID) REFERENCES items(itemID) ); CREATE INDEX IF NOT EXISTS itemNotes_sourceItemID ON itemNotes(sourceItemID); CREATE TABLE IF NOT EXISTS itemNoteTitles ( - itemID INT, + itemID INTEGER PRIMARY KEY, title TEXT, - PRIMARY KEY (itemID), FOREIGN KEY (itemID) REFERENCES itemNotes(itemID) ); -- Metadata for attachment items CREATE TABLE IF NOT EXISTS itemAttachments ( - itemID INT, + itemID INTEGER PRIMARY KEY, sourceItemID INT, linkMode INT, mimeType TEXT, charsetID INT, path TEXT, originalPath TEXT, - PRIMARY KEY (itemID), FOREIGN KEY (itemID) REFERENCES items(itemID), FOREIGN KEY (sourceItemID) REFERENCES items(sourceItemID) ); @@ -121,10 +115,9 @@ CREATE INDEX IF NOT EXISTS itemAttachments_mimeType ON itemAttachments(mimeType) -- Individual entries for each tag CREATE TABLE IF NOT EXISTS tags ( - tagID INT, + tagID INTEGER PRIMARY KEY, tag TEXT, tagType INT, - PRIMARY KEY (tagID), UNIQUE (tag, tagType) ); @@ -149,11 +142,10 @@ CREATE INDEX IF NOT EXISTS itemSeeAlso_linkedItemID ON itemSeeAlso(linkedItemID) -- Names of each individual "creator" (inc. authors, editors, etc.) CREATE TABLE IF NOT EXISTS creators ( - creatorID INT, + creatorID INTEGER PRIMARY KEY, firstName TEXT, lastName TEXT, - fieldMode INT, - PRIMARY KEY (creatorID) + fieldMode INT ); -- Associates single or multiple creators to items @@ -170,10 +162,9 @@ CREATE TABLE IF NOT EXISTS itemCreators ( -- Collections for holding items CREATE TABLE IF NOT EXISTS collections ( - collectionID INT, + collectionID INTEGER PRIMARY KEY, collectionName TEXT, parentCollectionID INT, - PRIMARY KEY (collectionID), FOREIGN KEY (parentCollectionID) REFERENCES collections(collectionID) ); @@ -189,9 +180,8 @@ CREATE TABLE IF NOT EXISTS collectionItems ( CREATE INDEX IF NOT EXISTS itemID ON collectionItems(itemID); CREATE TABLE IF NOT EXISTS savedSearches ( - savedSearchID INT, - savedSearchName TEXT, - PRIMARY KEY(savedSearchID) + savedSearchID INTEGER PRIMARY KEY, + savedSearchName TEXT ); CREATE TABLE IF NOT EXISTS savedSearchConditions ( @@ -201,18 +191,17 @@ CREATE TABLE IF NOT EXISTS savedSearchConditions ( operator TEXT, value TEXT, required NONE, - PRIMARY KEY(savedSearchID, searchConditionID), + PRIMARY KEY (savedSearchID, searchConditionID), FOREIGN KEY (savedSearchID) REFERENCES savedSearches(savedSearchID) ); CREATE TABLE IF NOT EXISTS fulltextItems ( - itemID INT, + itemID INTEGER PRIMARY KEY, version INT, indexedPages INT, totalPages INT, indexedChars INT, totalChars INT, - PRIMARY KEY (itemID), FOREIGN KEY (itemID) REFERENCES items(itemID) ); CREATE INDEX IF NOT EXISTS fulltextItems_version ON fulltextItems(version);