pbl_domain_ext/sql/pbl_domain_ext_assoc.sql
2026-09-18 00:05:05 +08:00

70 lines
4.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================
-- pbl_domain_ext —— M8 基础域薄扩展 DDLworld/scene/entity 关联表)
-- 铁律:不修改 world / scene / entity 三张基表Q-OPEN-3 决议)
-- 关联表不建外键(避免锁基表 / 跨库),只存 id 引用
-- 方言MariaDB / MySQLBIGINT AUTO_INCREMENT
-- ============================================================
CREATE TABLE IF NOT EXISTS pbl_world_ref (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
tenant_id VARCHAR(64) NOT NULL COMMENT 'PBL 租户ID强制打头',
world_id BIGINT NOT NULL COMMENT '基表 world.id只读引用',
class_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属班级 pbl_class.id',
team_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属团队 pbl_team.id',
visibility VARCHAR(16) NOT NULL DEFAULT 'team' COMMENT '可见性 team/class/tenant',
role_code VARCHAR(64) NOT NULL DEFAULT '' COMMENT '角色绑定,空=通用',
source VARCHAR(32) NOT NULL DEFAULT 'manual' COMMENT '来源 manual/compiler/import',
ext_json TEXT NULL COMMENT 'PBL 侧扩展属性 JSON',
created_by VARCHAR(64) NULL COMMENT '创建人',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_pbl_world_ref (tenant_id, world_id, team_id, role_code),
KEY idx_pbl_world_ref_class (tenant_id, class_id),
KEY idx_pbl_world_ref_team (tenant_id, team_id),
KEY idx_pbl_world_ref_world (world_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PBL 世界关联表(薄扩展,不改 world 基表)';
CREATE TABLE IF NOT EXISTS pbl_scene_ref (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
tenant_id VARCHAR(64) NOT NULL COMMENT 'PBL 租户ID强制打头',
scene_id BIGINT NOT NULL COMMENT '基表 scene.id只读引用',
world_id BIGINT NOT NULL DEFAULT 0 COMMENT '父级归属 world.id',
class_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属班级 pbl_class.id',
team_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属团队 pbl_team.id',
visibility VARCHAR(16) NOT NULL DEFAULT 'team' COMMENT '可见性 team/class/tenant',
role_code VARCHAR(64) NOT NULL DEFAULT '' COMMENT '角色绑定,空=通用',
source VARCHAR(32) NOT NULL DEFAULT 'manual' COMMENT '来源 manual/compiler/import',
ext_json TEXT NULL COMMENT 'PBL 侧扩展属性 JSON',
created_by VARCHAR(64) NULL COMMENT '创建人',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_pbl_scene_ref (tenant_id, scene_id, team_id, role_code),
KEY idx_pbl_scene_ref_world (tenant_id, world_id),
KEY idx_pbl_scene_ref_class (tenant_id, class_id),
KEY idx_pbl_scene_ref_team (tenant_id, team_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PBL 场景关联表(薄扩展,不改 scene 基表)';
CREATE TABLE IF NOT EXISTS pbl_entity_ref (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
tenant_id VARCHAR(64) NOT NULL COMMENT 'PBL 租户ID强制打头',
entity_id BIGINT NOT NULL COMMENT '基表 entity.id只读引用',
scene_id BIGINT NOT NULL DEFAULT 0 COMMENT '父级归属 scene.id',
world_id BIGINT NOT NULL DEFAULT 0 COMMENT '父级归属 world.id',
class_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属班级 pbl_class.id',
team_id BIGINT NOT NULL DEFAULT 0 COMMENT '归属团队 pbl_team.id',
visibility VARCHAR(16) NOT NULL DEFAULT 'team' COMMENT '可见性 team/class/tenant',
role_code VARCHAR(64) NOT NULL DEFAULT '' COMMENT '角色绑定,空=通用',
source VARCHAR(32) NOT NULL DEFAULT 'manual' COMMENT '来源 manual/compiler/import',
ext_json TEXT NULL COMMENT 'PBL 侧扩展属性 JSON',
created_by VARCHAR(64) NULL COMMENT '创建人',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_pbl_entity_ref (tenant_id, entity_id, team_id, role_code),
KEY idx_pbl_entity_ref_scene (tenant_id, scene_id),
KEY idx_pbl_entity_ref_world (tenant_id, world_id),
KEY idx_pbl_entity_ref_team (tenant_id, team_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='PBL 实体关联表(薄扩展,不改 entity 基表)';