70 lines
4.5 KiB
SQL
70 lines
4.5 KiB
SQL
-- ============================================================
|
||
-- pbl_domain_ext —— M8 基础域薄扩展 DDL(world/scene/entity 关联表)
|
||
-- 铁律:不修改 world / scene / entity 三张基表(Q-OPEN-3 决议)
|
||
-- 关联表不建外键(避免锁基表 / 跨库),只存 id 引用
|
||
-- 方言:MariaDB / MySQL(BIGINT 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 基表)';
|