63 lines
4.0 KiB
SQL
63 lines
4.0 KiB
SQL
-- 图片生成模板结构,保存用户的生成配置与参考图关系。
|
|
CREATE TABLE product_image_templates (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id uuid NOT NULL REFERENCES web_users(id) ON DELETE CASCADE,
|
|
name varchar(120) NOT NULL,
|
|
prompt text NOT NULL DEFAULT '',
|
|
model_id uuid REFERENCES models(id),
|
|
aspect_ratio varchar(12) NOT NULL DEFAULT '1:1',
|
|
resolution varchar(12) NOT NULL DEFAULT '1K',
|
|
image_count smallint NOT NULL DEFAULT 1,
|
|
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at timestamptz,
|
|
CONSTRAINT chk_product_image_template_ratio CHECK (aspect_ratio IN ('1:1', '3:4', '4:3', '9:16', '16:9')),
|
|
CONSTRAINT chk_product_image_template_resolution CHECK (resolution IN ('1K', '2K', '4K')),
|
|
CONSTRAINT chk_product_image_template_count CHECK (image_count BETWEEN 1 AND 4)
|
|
);
|
|
|
|
CREATE INDEX idx_product_image_templates_user_updated
|
|
ON product_image_templates(user_id, updated_at DESC)
|
|
WHERE deleted_at IS NULL;
|
|
|
|
-- 图片生成参考图关系,使用顺序字段稳定传递多张参考图。
|
|
CREATE TABLE product_image_references (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
template_id uuid NOT NULL REFERENCES product_image_templates(id) ON DELETE CASCADE,
|
|
media_asset_id uuid NOT NULL REFERENCES media_assets(id),
|
|
sort_order smallint NOT NULL,
|
|
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT uq_product_image_reference_media UNIQUE (template_id, media_asset_id),
|
|
CONSTRAINT uq_product_image_reference_order UNIQUE (template_id, sort_order),
|
|
CONSTRAINT chk_product_image_reference_order CHECK (sort_order BETWEEN 1 AND 4)
|
|
);
|
|
|
|
CREATE INDEX idx_product_image_references_template
|
|
ON product_image_references(template_id, sort_order);
|
|
|
|
COMMENT ON TABLE product_image_templates IS '用户保存的图片生成生成模板';
|
|
COMMENT ON COLUMN product_image_templates.id IS '图片生成模板主键';
|
|
COMMENT ON COLUMN product_image_templates.user_id IS '模板所属用户';
|
|
COMMENT ON COLUMN product_image_templates.name IS '模板名称';
|
|
COMMENT ON COLUMN product_image_templates.prompt IS '图片生成生成提示词';
|
|
COMMENT ON COLUMN product_image_templates.model_id IS '模板选用的图片模型';
|
|
COMMENT ON COLUMN product_image_templates.aspect_ratio IS '生成图片宽高比';
|
|
COMMENT ON COLUMN product_image_templates.resolution IS '生成图片分辨率档位';
|
|
COMMENT ON COLUMN product_image_templates.image_count IS '单次生成图片张数';
|
|
COMMENT ON COLUMN product_image_templates.created_at IS '模板创建时间';
|
|
COMMENT ON COLUMN product_image_templates.updated_at IS '模板最近更新时间';
|
|
COMMENT ON COLUMN product_image_templates.deleted_at IS '模板软删除时间';
|
|
COMMENT ON CONSTRAINT chk_product_image_template_ratio ON product_image_templates IS '限制图片生成支持的宽高比';
|
|
COMMENT ON CONSTRAINT chk_product_image_template_resolution ON product_image_templates IS '限制图片生成支持的分辨率档位';
|
|
COMMENT ON CONSTRAINT chk_product_image_template_count ON product_image_templates IS '限制单次生成一至四张图片';
|
|
|
|
COMMENT ON TABLE product_image_references IS '图片生成模板引用的参考图片';
|
|
COMMENT ON COLUMN product_image_references.id IS '参考图关系主键';
|
|
COMMENT ON COLUMN product_image_references.template_id IS '所属图片生成模板';
|
|
COMMENT ON COLUMN product_image_references.media_asset_id IS '引用的媒体文件';
|
|
COMMENT ON COLUMN product_image_references.sort_order IS '参考图传递顺序';
|
|
COMMENT ON COLUMN product_image_references.created_at IS '参考图添加时间';
|
|
COMMENT ON CONSTRAINT uq_product_image_reference_media ON product_image_references IS '同一模板不能重复引用同一媒体';
|
|
COMMENT ON CONSTRAINT uq_product_image_reference_order ON product_image_references IS '同一模板的参考图顺序不可重复';
|
|
COMMENT ON CONSTRAINT chk_product_image_reference_order ON product_image_references IS '每个模板最多保存四张参考图';
|