海洋CMS数据库表结构详解?常用数据表字段说明

juming
juming 正式会员超兽战士
发布于 2026-10-07 12:49 ·1 浏览 ·0 回复

海洋CMS(SeaCMS,一套基于 PHP+MySQL 的影视/文章建站系统)的数据库是"一主多从"结构:影片主表 sea_data 一条记录就是一部影片,播放地址表 sea_playdata、内容表 sea_content、分类表 sea_type 全部通过 v_id/tid 与它挂接。结论:只要搞懂 sea_data 的 v_id 是主键、sea_playdata 按 v_id 一对多、sea_type 用 tparent 做层级这三件事,海洋CMS 的数据你就基本会改了;动手前先 mysqldump 备份,字段名以 SHOW COLUMNS 实测为准(不同版本有差异)。

海洋CMS默认有哪些数据表?

结论:默认表前缀是 sea_,安装时可自定义,查表请先执行 SHOW TABLES;。

核心表大致分三组:影视组 sea_data(影片主表)、sea_playdata(播放地址)、sea_content(影片/文章详情正文);分类与配置组 sea_type(栏目分类)、sea_admin(后台管理员);互动组放评论、留言、会员等表。

如果你的站点装过多个程序,直接用 SHOW TABLES LIKE '%data%'; 定位,别凭记忆猜前缀。表前缀在安装时的"数据库配置"步骤里填写,装完再改前缀要同时改配置文件,风险高,不建议。

sea_data 影片主表有哪些关键字段?

结论:v_id 是自增主键,也是影片详情页 URL 里 id= 后面的数字,改播放页、改分类都以它为准绳。

常见字段(典型类型):v_id int 自增主键;v_name 影片名;v_type 所属分类 ID,对应 sea_type.tid;v_pic 封面图路径;v_actor/v_director 主演、导演;v_des 短简介,v_content 详细介绍;v_addtime 添加时间,存的是 Unix 时间戳而不是日期字符串;v_hits 点击数;v_state 连载/完结状态;v_note "更新至第几集"的备注;v_playfrom 播放来源标识,多来源用英文逗号分隔;v_score 评分;v_del 是否为删除状态。

查最近 10 部影片:

SELECT v_id, v_name, v_type, v_hits FROM sea_data ORDER BY v_id DESC LIMIT 10;

把某部片点量加 1000:

UPDATE sea_data SET v_hits = v_hits + 1000 WHERE v_id = 123;

注意 v_addtime 是时间戳,写 PHP 或 SQL 时要转换,直接写 '2024-06-01' 会存进 0 或报错。

sea_playdata 播放地址表和 sea_data 怎么关联?

结论:sea_playdata.v_id 对应 sea_data.v_id,一部影片有多条播放记录,一条 = 一集(或一个线路的一集)。

常见字段:p_id 自增主键;v_id 关联影片;p_from 播放来源/线路标识,同一个来源名必须与 sea_data.v_playfrom 里的一致,否则前端分线路标签会缺线路;p_url 播放地址;p_note 该集名称,如"第01集"。排序字段各版本命名不同(p_sort/p_playtime 都出现过),动手前先 SHOW COLUMNS FROM sea_playdata; 确认。

统计每个来源的集数:

SELECT p_from, COUNT(*) AS nums FROM sea_playdata GROUP BY p_from ORDER BY nums DESC;

想看某部片的所有集:

SELECT p_note, p_url FROM sea_playdata WHERE v_id = 123 ORDER BY p_id ASC;

采集或批量导入时,正确顺序是:先写 sea_data 拿到 v_id,再用这个 v_id 批量插 sea_playdata。顺序反了就会出现大量孤儿播放记录。

sea_type 分类表靠 tparent 做层级吗?

结论:是的,sea_type.tparent 存父级分类的 tid,顶级分类的 tparent 为 0,层级关系就靠这一个字段递归出来。

关键字段:tid 分类主键;tname 分类名;tparent 父级 tid;torder 排序值,越小越靠前;其余如英文别名、模板等字段各版本差异较大,用 SHOW COLUMNS FROM sea_type; 查。

查所有一级分类:

SELECT tid, tname, torder FROM sea_type WHERE tparent = 0 ORDER BY torder ASC;

查某分类下有多少部影片:

SELECT COUNT(*) FROM sea_data WHERE v_type = 5;

注意 sea_data.v_type 存的是具体分类 tid,不是父级 tid。如果你的主题按父分类聚合影片,需要先用 sea_type.tparent 把所有子 tid 查出来,再 WHERE v_type IN (...)。

改海洋CMS数据库前必须做什么?

结论:先备份,再带条件改,最后清缓存。

备份命令(把库名 seacms、日期换成你的):

mysqldump -uroot -p --default-character-set=utf8mb4 seacms > seacms_20240601.sql

三个高频坑:一是 UPDATE/DELETE 不带 WHERE,一次清空整站数据;二是用 phpMyAdmin 直接改带中文的字段,字符集选错导致乱码,连接必须是 utf8mb4;三是改完数据库页面没变化——海洋CMS 有缓存,去后台找到"更新缓存/生成缓存"执行一次,或删除 /data 目录下的缓存文件(缓存文件名随版本不同,别删配置文件)。

要看清一张表的完整定义,用 SHOW CREATE TABLE sea_data\G,比后台任何说明都准。

总的来说:sea_data 管影片本体、sea_playdata 管播放地址、sea_type 管栏目,三者用 v_id/tid 串起来;任何批量操作先 mysqldump 备份、SQL 带 WHERE、结束更新缓存。

版权声明:本文来自 GJ站长论坛《海洋CMS数据库表结构详解?常用数据表字段说明》
原文链接:https://www.gj0.com/thread-289.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~