2009-08-18

iPhone 3.0のnotes.dbの変更点

iPhone/iPod touch 3.0のメモアプリ (MobileNotes.app) のsqlite3テーブルスキーマが1.1の頃に比べて拡張されています(2.xからかもしれません)。
$ sqlite3 notes.db
sqlite> .tables
Note
_SqliteDatabaseProperties
NoteChanges
note_bodies
sqlite> .schema
CREATE TABLE Note (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, creation_date INTEGER, title TEXT, summary TEXT, contains_cjk INTEGER, modification_date INTEGER, author TEXT, content_type INTEGER);
CREATE TABLE NoteChanges (record INTEGER, type INTEGER);
CREATE TABLE _SqliteDatabaseProperties (key TEXT, value TEXT, UNIQUE(key));
CREATE TABLE note_bodies (note_id INTEGER, data, UNIQUE(note_id));
CREATE TRIGGER delete_note_bodies AFTER DELETE ON Note
BEGIN
DELETE FROM note_bodies WHERE note_id = OLD.ROWID;
END;
sqlite>

変更点は、
  • Notesテーブルの追加カラム:
    contains_cjk:cjk文字が含まれているかどうか。1でYes。漢字の有無でフォントが切り替わる謎がこれで解けた。
    modification_date:最終修正日時。1.1ではcreation_dateでmodification_dateを代用していた。
    author:おそらく、Sync時にサーバ側のFrom:ユーザがストアされる。
    content_type:不明。メモアプリで作ったアイテムは、全て0のようだ。
  • 追加テーブル:NoteChanges
    アイテムを編集したり削除した履歴。編集の度にレコードが追加される。おそらく、type=1は編集、type=2は削除。Syncすると履歴が削除されると思われる(後で実験)。

No comments:

Post a Comment