40 lines
2.1 KiB
SQL
40 lines
2.1 KiB
SQL
-- Migration: Create activity_contributions table
|
|
-- Description: 用户活动贡献记录表,用于实时显示最新贡献
|
|
|
|
-- 1. 创建 activity_contributions 表
|
|
CREATE TABLE IF NOT EXISTS activity_contributions (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
activity_id BIGINT NOT NULL,
|
|
user_id BIGINT NOT NULL,
|
|
star_id BIGINT NOT NULL,
|
|
item_id BIGINT NOT NULL,
|
|
item_type VARCHAR(50) NOT NULL,
|
|
quantity INTEGER NOT NULL DEFAULT 1,
|
|
crystal_spent BIGINT NOT NULL,
|
|
contribution_points BIGINT NOT NULL,
|
|
created_at BIGINT NOT NULL
|
|
);
|
|
|
|
-- 2. 创建索引
|
|
CREATE INDEX IF NOT EXISTS idx_activity_contributions_activity ON activity_contributions(activity_id);
|
|
CREATE INDEX IF NOT EXISTS idx_activity_contributions_user_star ON activity_contributions(user_id, star_id);
|
|
CREATE INDEX IF NOT EXISTS idx_activity_contributions_created ON activity_contributions(created_at DESC);
|
|
|
|
-- 3. 添加外键约束
|
|
ALTER TABLE activity_contributions
|
|
ADD CONSTRAINT fk_activity_contributions_activity FOREIGN KEY (activity_id) REFERENCES activities(id) ON DELETE CASCADE,
|
|
ADD CONSTRAINT fk_activity_contributions_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
ADD CONSTRAINT fk_activity_contributions_item FOREIGN KEY (item_id) REFERENCES activity_items(id) ON DELETE CASCADE,
|
|
ADD CONSTRAINT fk_activity_contributions_star FOREIGN KEY (star_id) REFERENCES stars(star_id) ON DELETE CASCADE;
|
|
|
|
-- 4. 添加注释
|
|
COMMENT ON TABLE activity_contributions IS '用户活动贡献记录表';
|
|
COMMENT ON COLUMN activity_contributions.activity_id IS '活动ID';
|
|
COMMENT ON COLUMN activity_contributions.user_id IS '用户ID';
|
|
COMMENT ON COLUMN activity_contributions.star_id IS '粉丝身份ID';
|
|
COMMENT ON COLUMN activity_contributions.item_id IS '道具ID';
|
|
COMMENT ON COLUMN activity_contributions.item_type IS '道具类型';
|
|
COMMENT ON COLUMN activity_contributions.quantity IS '购买数量';
|
|
COMMENT ON COLUMN activity_contributions.crystal_spent IS '消耗水晶数';
|
|
COMMENT ON COLUMN activity_contributions.contribution_points IS '贡献点数';
|
|
COMMENT ON COLUMN activity_contributions.created_at IS '创建时间(毫秒时间戳)'; |