iPhone三大数据库结构中英文对照翻译
一、AddressBook.sqlitedb 通讯录数据库
location: /private/var/root/Library/AddressBook/AddressBook.sqlitedb
1.ABGroup 联系人分组信息 ROWID:组ID,自增PK Name:组名
2.ABGroupChanges 分组信息更新 record: type:
3.ABGroupMembers 组联系人 UID: PK group_id:组ID,对应ABGroup.ROWID member_type: 组员类别 member_id: 组员(联系人)ID,对应ABPerson.ROWID 注意:UNIQUE(group_id, member_type, member_id)
4.ABMultiValue 存储联系人的各种联系方式 UID: PK record_id: 联系人ID,对应ABPerson.ROWID property: 属性值. 3.电话; 4.email; 待补充… identifier: 标识符.0,1,2,3,4,目前所知用于排序 label: 标志值. 1.mobile;2.home;3.work;4.other;5.homepage(URL) 对应ABMultiValueLabel.value value: 值. 例如一个手机号码13800138000,或一个email地址[email protected]
5.ABMultiValueEntry (未知) parent_id: (未知) key: (未知) value: (未知) 注意:UNIQUE(parent_id, key)
6.ABMultiValueEntryKey (未知) value: (未知) 注意:UNIQUE(value)
7.ABMultiValueLabel 联系方式标志值列表 value: 见ABMultiValue.label
8.ABPerson ROWID 自增PK,也是联系人的唯一标识 First 名字 Last 姓 Middle (未定) FirstPhonetic (未定,貌似留作语音拨号用的) MiddlePhonetic (未定,貌似留作语音拨号用的) LastPhonetic (未定,貌似留作语音拨号用的) Organization 所在公司,组织 Department 所在部门 Note 注释 Kind 未定 Birthday 生日 JobTitle 头衔 Nickname 昵称 Prefix 前缀 Suffix 后缀 FirstSort 排序用(具体未知) LastSort 排序用(具体未知) CreationDate 创建时间 ModificationDate 最后修改时间 CompositeNameFallback (未知)
9.ABPersonChanges (未知) record type
10.ABPersonMultiValueDeletes (未知) record_id property_id identifier
11.ABPhoneLastFour 电话号码后四位匹配表 multivalue_id 对应ABMultiValue.UID value 电话号码后四位
12.ABRecent (未知) date name property value
13.sorting_first_section_list (未知) character number
14.sorting_last_section_list (未知) character number
15.sqlite_sequence (用于记录序列) name:表命,如ABPerson seq: 最新序列号
— ==========下面是建表语句========== CREATE TABLE ABGroup (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT); CREATE TABLE ABGroupChanges (record INTEGER, type INTEGER); CREATE TABLE ABGroupMembers (UID INTEGER PRIMARY KEY, group_id INTEGER, member_type INTEGER, member_id INTEGER, UNIQUE(group_id, member_type, member_id)); CREATE TABLE ABMultiValue (UID INTEGER PRIMARY KEY, record_id INTEGER, property INTEGER, identifier INTEGER, label INTEGER, value TEXT); CREATE TABLE ABMultiValueEntry (parent_id INTEGER, key INTEGER, value TEXT, UNIQUE(parent_id, key)); CREATE TABLE ABMultiValueEntryKey (value TEXT, UNIQUE(value)); CREATE TABLE ABMultiValueLabel (value TEXT, UNIQUE(value)); CREATE TABLE ABPerson (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, First TEXT, Last TEXT, Middle TEXT, FirstPhonetic TEXT, MiddlePhonetic TEXT, LastPhonetic TEXT, Organization TEXT, Department TEXT, Note TEXT, Kind INTEGER, Birthday TEXT, JobTitle TEXT, Nickname TEXT, Prefix TEXT, Suffix TEXT, FirstSort TEXT, LastSort TEXT, CreationDate INTEGER, ModificationDate INTEGER, CompositeNameFallback TEXT); CREATE TABLE ABPersonChanges (record INTEGER, type INTEGER); CREATE TABLE ABPersonMultiValueDeletes (record_id INTEGER, property_id INTEGER, identifier INTEGER); CREATE TABLE ABPhoneLastFour (multivalue_id INTEGER PRIMARY KEY, value TEXT); CREATE TABLE ABRecent(date INTEGER, name, property INTEGER, value); CREATE TABLE sorting_first_section_list(character, number, UNIQUE(character)); CREATE TABLE sorting_last_section_list(character, number, UNIQUE(character)); CREATE TABLE sqlite_sequence(name TEXT, seq INTEGER);
— ==========下面是创建索引========== CREATE INDEX ABMultiValueRecordIDIndex on ABMultiValue(record_id); CREATE INDEX ABMultiValueLabelIndex ON ABMultiValue(label); CREATE INDEX ABMultiValueEntryKeyIndex ON ABMultiValueEntry(key); CREATE INDEX ABFirstSortIndex on ABPerson(FirstSort); CREATE INDEX ABLastSortIndex on ABPerson(LastSort); CREATE INDEX ABPhoneLastFourIndex ON ABPhoneLastFour(value); CREATE INDEX ABRecent_value_index ON ABRecent(property, value); CREATE INDEX ABRecent_date_index ON ABRecent(property, date);
— ==========下面是创建触发器========== CREATE TRIGGER delete_phone_last_four AFTER DELETE ON ABMultiValue BEGIN DELETE FROM ABPhoneLastFour WHERE multivalue_id = OLD.UID; END;
CREATE TRIGGER sorting_first_prefix_trigger AFTER INSERT ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_first_section_list VALUES(substr(IFNULL(NEW.FirstSort, ‘~’), 1, 1), 1 + IFNULL((SELECT number from sorting_first_section_list WHERE character = substr(IFNULL(NEW.FirstSort, ‘~’), 1, 1)), 0)); END;
CREATE TRIGGER update_first_prefix_trigger AFTER UPDATE ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_first_section_list VALUES(substr(IFNULL(OLD.FirstSort, ‘~’), 1, 1), (SELECT number from sorting_first_section_list WHERE character = substr(IFNULL(OLD.FirstSort, ‘~’), 1, 1)) - 1); INSERT OR REPLACE INTO sorting_first_section_list VALUES(substr(IFNULL(NEW.FirstSort, ‘~’), 1, 1), 1 + IFNULL((SELECT number from sorting_first_section_list WHERE character = substr(IFNULL(NEW.FirstSort, ‘~’), 1, 1)), 0)); END;
CREATE TRIGGER delete_first_prefix_trigger AFTER DELETE ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_first_section_list VALUES(substr(IFNULL(OLD.FirstSort, ‘~’), 1, 1), (SELECT number from sorting_first_section_list WHERE character = substr(IFNULL(OLD.FirstSort, ‘~’), 1, 1)) - 1); END;
CREATE TRIGGER sorting_last_prefix_trigger AFTER INSERT ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_last_section_list VALUES(substr(IFNULL(NEW.LastSort, ‘~’), 1, 1), 1 + IFNULL((SELECT number from sorting_last_section_list WHERE character = substr(IFNULL(NEW.LastSort, ‘~’), 1, 1)), 0)); END;
CREATE TRIGGER update_last_prefix_trigger AFTER UPDATE ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_last_section_list VALUES(substr(IFNULL(OLD.LastSort, ‘~’), 1, 1), (SELECT number from sorting_last_section_list WHERE character = substr(IFNULL(OLD.LastSort, ‘~’), 1, 1)) - 1); INSERT OR REPLACE INTO sorting_last_section_list VALUES(substr(IFNULL(NEW.LastSort, ‘~’), 1, 1), 1 + IFNULL((SELECT number from sorting_last_section_list WHERE character = substr(IFNULL(NEW.LastSort, ‘~’), 1, 1)), 0)); END;
CREATE TRIGGER delete_last_prefix_trigger AFTER DELETE ON ABPerson BEGIN INSERT OR REPLACE INTO sorting_last_section_list VALUES(substr(IFNULL(Old.LastSort, ‘~’), 1, 1), (SELECT number from sorting_last_section_list WHERE character = substr(IFNULL(Old.LastSort, ‘~’), 1, 1)) - 1); END;
二、notes.db 记事本数据库
location: /private/var/root/Library/Notes/notes.db
1.Note 摘要信息记录表 creation_date: 创建时间 title: 标题 summary: 摘要
2.note_bodies 详细信息 note_id: note ID data: 记事内容,包含标题
– ==========下面是建表语句========== CREATE TABLE Note (creation_date INTEGER, title TEXT, summary TEXT); 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;
三、sms.db 短信数据库
location: /private/var/root/Library/SMS/sms.db
1.message 短信表 ROWID: 自增PK address: 对方手机号码(+86) date: 时间 text: 内容 flags: 标记. 2.收到的;3.自己发送的 replace: (未知) svc_center: (未知)
– ==========下面是建表语句========== CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace INTEGER, svc_center TEXT);
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。