条目目前用到的有三个表 (还有chii_subject_alias
表,但是因为目前没有提供搜索功能,所以没有用到)
CREATE TABLE IF NOT EXISTS `chii_subjects` (
`subject_id` mediumint(8) unsigned NOT NULL,
`subject_type_id` smallint(6) unsigned NOT NULL DEFAULT '0',
`subject_name` varchar(80) NOT NULL,
`subject_name_cn` varchar(80) NOT NULL,
`subject_uid` varchar(20) NOT NULL COMMENT 'isbn / imdb',
`subject_creator` mediumint(8) unsigned NOT NULL,
`subject_dateline` int(10) unsigned NOT NULL DEFAULT '0',
`subject_image` varchar(255) NOT NULL,
`subject_platform` smallint(6) unsigned NOT NULL DEFAULT '0',
`field_infobox` mediumtext NOT NULL,
`field_summary` mediumtext NOT NULL COMMENT 'summary',
`field_5` mediumtext NOT NULL COMMENT 'author summary',
`field_volumes` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '卷数',
`field_eps` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject_wish` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject_collect` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject_doing` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject_on_hold` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '搁置人数',
`subject_dropped` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '抛弃人数',
`subject_series` tinyint(1) unsigned NOT NULL DEFAULT '0',
`subject_series_entry` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject_idx_cn` varchar(1) NOT NULL,
`subject_airtime` tinyint(1) unsigned NOT NULL,
`subject_nsfw` tinyint(1) NOT NULL,
`subject_ban` tinyint(1) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
条目主表。
subject_series
和 subject_series_entry
用于书籍条目的主系列功能。其他的基本上通过字段名就能判断出来。单行本和系列的信息在条目关联表中也有保存。
subject_idx_cn
是中文名的第一个字的拼音首字母。
CREATE TABLE IF NOT EXISTS `chii_subject_fields` (
`field_sid` mediumint(8) unsigned NOT NULL,
`field_tid` smallint(6) unsigned NOT NULL DEFAULT '0',
`field_tags` mediumtext NOT NULL,
`field_rate_1` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_2` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_3` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_4` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_5` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_6` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_7` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_8` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_9` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_rate_10` mediumint(8) unsigned NOT NULL DEFAULT '0',
`field_airtime` tinyint(1) unsigned NOT NULL,
`field_rank` int(10) unsigned NOT NULL DEFAULT '0',
`field_year` year(4) NOT NULL COMMENT '放送年份',
`field_mon` tinyint(2) NOT NULL COMMENT '放送月份',
`field_week_day` tinyint(1) NOT NULL COMMENT '放送日(星期X)',
`field_date` date NOT NULL COMMENT '放送日期',
`field_redirect` mediumint(8) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
field_sid
是条目 id。
field_rate_*
是各个分数的打分人数。目前的最终分数计算为简单地平均值。
field_tags
保存的是 php serlize 序列化过的 tag 信息,大概这样:
[
{"tag_name": Optional[str], "result": int},
{"tag_name": Optional[str], "result": int},
]
CREATE TABLE IF NOT EXISTS `chii_subject_relations` (
`rlt_subject_id` mediumint(8) unsigned NOT NULL COMMENT '关联主 ID',
`rlt_subject_type_id` tinyint(3) unsigned NOT NULL,
`rlt_relation_type` smallint(5) unsigned NOT NULL COMMENT '关联类型',
`rlt_related_subject_id` mediumint(8) unsigned NOT NULL COMMENT '关联目标 ID',
`rlt_related_subject_type_id` tinyint(3) unsigned NOT NULL COMMENT '关联目标类型',
`rlt_vice_versa` tinyint(1) unsigned NOT NULL,
`rlt_order` tinyint(3) unsigned NOT NULL COMMENT '关联排序'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='条目关联表';
对于 改编
关联,会 fallback 到对应条目的类型。比如 动画 改编 书籍
对应的关联信息为书籍。
章节定义在 chii_episodes
表中。
CREATE TABLE IF NOT EXISTS `chii_episodes` (
`ep_id` mediumint(8) unsigned NOT NULL,
`ep_subject_id` mediumint(8) unsigned NOT NULL,
`ep_sort` float unsigned NOT NULL DEFAULT '0',
`ep_type` tinyint(1) unsigned NOT NULL,
`ep_disc` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '碟片数',
`ep_name` varchar(80) NOT NULL,
`ep_name_cn` varchar(80) NOT NULL,
`ep_rate` tinyint(3) NOT NULL,
`ep_duration` varchar(80) NOT NULL,
`ep_airdate` varchar(80) NOT NULL,
`ep_online` mediumtext NOT NULL,
`ep_comment` mediumint(8) unsigned NOT NULL,
`ep_resources` mediumint(8) unsigned NOT NULL,
`ep_desc` mediumtext NOT NULL,
`ep_dateline` int(10) unsigned NOT NULL,
`ep_lastpost` int(10) unsigned NOT NULL,
`ep_lock` tinyint(3) unsigned NOT NULL DEFAULT '0',
`ep_ban` tinyint(3) unsigned NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ep_desc
章节简介。
ep_disc
仅在此表中出现,为音乐条目的碟片数,条目表中没有总碟片数。
ep_online
ep_resources
是废弃字段,曾经存相关网站的资源,后来放弃了。
ep_ban
表示章节被锁定,在 api 响应中应当隐藏。