基于 schema.json 的表结构、字段定义与外键关系图谱
存储实际文献内容、集合和笔记的主要数据表。
说明:存储所有文献条目的通用信息(无论类型是书、网页还是论文)。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| 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。 |
说明:类似于文件夹,支持层级嵌套。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| collectionID | INTEGER | PK | - | 集合唯一ID。 |
| collectionName | TEXT | - | - | 集合显示的名称。 |
| parentCollectionID | INTEGER | FK | collections | 父集合ID(自关联),若为NULL则为顶级集合。 |
| libraryID | INTEGER | FK | libraries | 所属库ID。 |
说明:存储去重后的作者/编辑信息。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| creatorID | INTEGER | PK | - | 创作者唯一ID。 |
| firstName | TEXT | - | - | 名字。 |
| lastName | TEXT | - | - | 姓氏。 |
| fieldMode | INTEGER | - | - | 字段模式:0=两字段(名/姓),1=单字段(全名)。 |
存储字段的实际值、定义以及条目与集合的多对多关系。
说明:采用 EAV (Entity-Attribute-Value) 模型,一条记录代表条目的某一个字段值。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| itemID | INTEGER | FK | items | 关联到主条目。 |
| fieldID | INTEGER | FK | fields | 关联到字段定义(如 title, date)。 |
| valueID | INTEGER | FK (Opt) | itemDataValues | 关联到具体值(为了节省空间,大文本可能独立存储)。 |
说明:定义了Zotero支持的所有元数据字段名称。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| fieldID | INTEGER | PK | - | 字段唯一ID。 |
| fieldName | TEXT | UNIQUE | - | 字段名称(如 "title", "url", "date")。 |
| custom | INTEGER | - | - | 是否为自定义字段(1=是,0=否)。 |
说明:定义了支持的文献类型(book, journalArticle等)。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| itemTypeID | INTEGER | PK | - | 类型唯一ID。 |
| itemTypeName | TEXT | UNIQUE | - | 类型名称(如 "book", "artwork")。 |
| custom | INTEGER | - | - | 是否为自定义类型。 |
说明:解决“一个条目可以属于多个集合”的多对多关系。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| collectionID | INTEGER | FK | collections | 所属集合。 |
| itemID | INTEGER | FK | items | 关联条目。 |
条目与创作者也是通过中间表关联的,并指定了角色(作者、编辑等)。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| itemID | INTEGER | FK | items | 关联条目。 |
| creatorID | INTEGER | FK | creators | 关联创作者。 |
| creatorTypeID | INTEGER | FK | creatorTypes | 创作者类型(如 author, editor)。 |
| orderIndex | INTEGER | - | - | 排序索引,决定显示顺序。 |
说明:定义了 author, editor, contributor 等角色。
| 字段名 | 类型 | 键 | 关联表 | 说明 |
|---|---|---|---|---|
| creatorTypeID | INTEGER | PK | - | 类型ID。 |
| creatorTypeName | TEXT | - | - | 类型名称(如 "author")。 |
| 源表 | 外键字段 | 关系 | 目标表 | 业务含义 |
|---|---|---|---|---|
| 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 | 指定该作者在当前条目中的角色。 |