TYPO3环境下数据库表关系查询及实体关系模型构建咨询
问题解答
关于TYPO3数据库表的关联问题
- TYPO3各表存在大量逻辑关联,并非独立表,数据库层面没有外键约束是TYPO3的架构设计决定的
- 关联规则全部定义在各扩展的*TCA(表配置数组)*中,由TYPO3的ORM层在业务逻辑中校验关联合法性,不会写入数据库生成外键,因此phpMyAdmin的Designer功能无法识别到关联
- 几个默认核心关联示例:
tt_content.pid逻辑关联pages.uid,表示内容元素所属的页面tt_content.cruser_id逻辑关联be_users.uid,表示创建内容元素的后台用户- 所有表的
pid字段默认关联pages.uid,表示该记录存储的页面节点
关于ER模型构建的相关问题
需选取的表参考
你初选的pages、tt_content、be_users是核心基础表,可根据你的业务场景补充以下表:
- 若自定义内容元素用到图片、视频等媒体资源:补充
sys_file(存储文件元数据)、sys_file_reference(关联记录与文件的中间表) - 若用到内容分类功能:补充
sys_category(分类表)、sys_category_record_mm(分类与内容关联的中间表) - 若用到多语言功能:补充
sys_language(语言配置表) - 若用到前台用户权限/交互功能:补充
fe_users(前台用户表)、fe_groups(前台用户组表)
无数据库外键的建模方案
- 没有数据库级外键完全不影响ER模型标注,ER模型本身支持表达逻辑关联关系,不需要依赖数据库的外键约束
- 具体建模步骤可参考:
- 先标注核心表的固定逻辑关联,比如
pages和tt_content的一对多关联、be_users和tt_content的一对多关联 - 查看你自研sitepackage扩展中
Configuration/TCA/Overrides/tt_content.php文件里的自定义字段配置,根据字段的foreign_table、MM等参数梳理自定义字段的关联表与关联类型(一对一/一对多/多对多) - 多对多关联需要把中间表加入模型,标注中间表和两端主表的关联关系即可
- 先标注核心表的固定逻辑关联,比如
内容的提问来源于stack exchange,提问作者Miz15
相关产品推荐
相关产品推荐

