Zotero 数据结构完整解析

基于 schema.json 的表结构、字段定义与外键关系图谱

图例说明: TableName (表名) fieldName (字段名) PK 主键 FK 外键

1. 数据结构概览

Zotero 的数据模型以 items (条目) 为核心,通过关联表链接到具体的元数据字段、创作者和附件。
libraries 1:N collections N:M collectionItems N:1 items

items 1:N itemData N:1 fields

items 1:N itemCreators N:1 creators

2. 核心业务表结构

存储实际文献内容、集合和笔记的主要数据表。

2.1 条目主表 items

说明:存储所有文献条目的通用信息(无论类型是书、网页还是论文)。

字段名 类型 关联表 说明
itemID INTEGER PK - 条目唯一ID,内部主键。
itemTypeID INTEGER FK itemTypes 关联文献类型ID(如:期刊论文、图书)。
dateAdded TIMESTAMP - - 条目添加到库的时间。
dateModified TIMESTAMP - - 客户端最后修改时间。
serverDateModified TIMESTAMP - - 服务器最后修改时间,用于同步冲突检测。
key TEXT UNIQUE - 全局唯一键(8字符),用于同步和API引用。
libraryID INTEGER FK libraries 所属个人库或群组库的ID。

2.2 文献集合表 collections

说明:类似于文件夹,支持层级嵌套。

字段名 类型 关联表 说明
collectionID INTEGER PK - 集合唯一ID。
collectionName TEXT - - 集合显示的名称。
parentCollectionID INTEGER FK collections 父集合ID(自关联),若为NULL则为顶级集合。
libraryID INTEGER FK libraries 所属库ID。

2.3 创作者表 creators

说明:存储去重后的作者/编辑信息。

字段名 类型 关联表 说明
creatorID INTEGER PK - 创作者唯一ID。
firstName TEXT - - 名字。
lastName TEXT - - 姓氏。
fieldMode INTEGER - - 字段模式:0=两字段(名/姓),1=单字段(全名)。

3. 元数据与关联表结构

存储字段的实际值、定义以及条目与集合的多对多关系。

3.1 条目数据表 itemData (核心扩展表)

说明:采用 EAV (Entity-Attribute-Value) 模型,一条记录代表条目的某一个字段值。

字段名 类型 关联表 说明
itemID INTEGER FK items 关联到主条目。
fieldID INTEGER FK fields 关联到字段定义(如 title, date)。
valueID INTEGER FK (Opt) itemDataValues 关联到具体值(为了节省空间,大文本可能独立存储)。

3.2 字段定义表 fields

说明:定义了Zotero支持的所有元数据字段名称。

字段名 类型 关联表 说明
fieldID INTEGER PK - 字段唯一ID。
fieldName TEXT UNIQUE - 字段名称(如 "title", "url", "date")。
custom INTEGER - - 是否为自定义字段(1=是,0=否)。

3.3 条目类型表 itemTypes

说明:定义了支持的文献类型(book, journalArticle等)。

字段名 类型 关联表 说明
itemTypeID INTEGER PK - 类型唯一ID。
itemTypeName TEXT UNIQUE - 类型名称(如 "book", "artwork")。
custom INTEGER - - 是否为自定义类型。

3.4 条目与集合关联表 collectionItems

说明:解决“一个条目可以属于多个集合”的多对多关系。

字段名 类型 关联表 说明
collectionID INTEGER FK collections 所属集合。
itemID INTEGER FK items 关联条目。

4. 创作者关联系统

条目与创作者也是通过中间表关联的,并指定了角色(作者、编辑等)。

4.1 条目-创作者关联表 itemCreators

字段名 类型 关联表 说明
itemID INTEGER FK items 关联条目。
creatorID INTEGER FK creators 关联创作者。
creatorTypeID INTEGER FK creatorTypes 创作者类型(如 author, editor)。
orderIndex INTEGER - - 排序索引,决定显示顺序。

4.2 创作者类型表 creatorTypes

说明:定义了 author, editor, contributor 等角色。

字段名 类型 关联表 说明
creatorTypeID INTEGER PK - 类型ID。
creatorTypeName TEXT - - 类型名称(如 "author")。

5. 完整外键链接关系汇总

本节详细列出所有表之间的链接逻辑。
源表 外键字段 关系 目标表 业务含义
items itemTypeID Many-to-One itemTypes 每个条目必须指定一种文献类型。
items libraryID Many-to-One libraries 每个条目属于一个特定的库。
collections parentCollectionID Many-to-One (Self) collections 支持多级文件夹嵌套。
itemData itemID Many-to-One items 一条元数据属于一个条目。
itemData fieldID Many-to-One fields 关联字段定义(如:这是标题字段)。
collectionItems collectionID Many-to-One collections 条目归属集合。
collectionItems itemID Many-to-One items 集合包含条目。
itemCreators itemID Many-to-One items 条目拥有创作者。
itemCreators creatorID Many-to-One creators 引用具体的作者实体。
itemCreators creatorTypeID Many-to-One creatorTypes 指定该作者在当前条目中的角色。