46 lines
2.9 KiB
SQL
46 lines
2.9 KiB
SQL
-- 使用shorturl_analytics数据库
|
||
USE shorturl_analytics;
|
||
|
||
-- 删除已存在的shorturl表
|
||
DROP TABLE IF EXISTS shorturl_analytics.shorturl;
|
||
|
||
-- 创建shorturl表
|
||
CREATE TABLE IF NOT EXISTS shorturl_analytics.shorturl (
|
||
-- 短链接基本信息(来源于resources表)
|
||
id String COMMENT '资源ID (resources.id)',
|
||
external_id String COMMENT '外部ID (resources.external_id)',
|
||
type String COMMENT '类型,值为shorturl',
|
||
slug String COMMENT '短链接slug (存储在attributes中)',
|
||
original_url String COMMENT '原始URL (存储在attributes中)',
|
||
title String COMMENT '标题 (存储在attributes中)',
|
||
description String COMMENT '描述 (存储在attributes中)',
|
||
attributes String DEFAULT '{}' COMMENT '资源属性JSON',
|
||
schema_version Int32 COMMENT 'Schema版本',
|
||
-- 创建者信息
|
||
creator_id String COMMENT '创建者ID (resources.creator_id)',
|
||
creator_email String COMMENT '创建者邮箱 (来自users表)',
|
||
creator_name String COMMENT '创建者名称 (来自users表)',
|
||
-- 时间信息
|
||
created_at DateTime64(3) COMMENT '创建时间 (resources.created_at)',
|
||
updated_at DateTime64(3) COMMENT '更新时间 (resources.updated_at)',
|
||
deleted_at Nullable(DateTime64(3)) COMMENT '删除时间 (resources.deleted_at)',
|
||
-- 项目关联 (project_resources表)
|
||
projects String DEFAULT '[]' COMMENT '项目关联信息数组。结构: [{project_id: String, project_name: String, project_description: String, assigned_at: DateTime64}]',
|
||
-- 团队关联 (通过项目关联到团队)
|
||
teams String DEFAULT '[]' COMMENT '团队关联信息数组。结构: [{team_id: String, team_name: String, team_description: String, via_project_id: String}]',
|
||
-- 标签关联 (resource_tags表)
|
||
tags String DEFAULT '[]' COMMENT '标签关联信息数组。结构: [{tag_id: String, tag_name: String, tag_type: String, created_at: DateTime64}]',
|
||
-- QR码关联 (qr_code表)
|
||
qr_codes String DEFAULT '[]' COMMENT 'QR码信息数组。结构: [{qr_id: String, scan_count: Int32, url: String, template_name: String, created_at: DateTime64}]',
|
||
-- 渠道关联 (channel表)
|
||
channels String DEFAULT '[]' COMMENT '渠道信息数组。结构: [{channel_id: String, channel_name: String, channel_path: String, is_user_created: Boolean}]',
|
||
-- 收藏关联 (favorite表)
|
||
favorites String DEFAULT '[]' COMMENT '收藏信息数组。结构: [{favorite_id: String, user_id: String, user_name: String, created_at: DateTime64}]',
|
||
-- 自定义过期时间 (存储在attributes中)
|
||
expires_at Nullable(DateTime64(3)) COMMENT '过期时间',
|
||
-- 统计信息 (分析时聚合计算)
|
||
click_count UInt32 DEFAULT 0 COMMENT '点击次数',
|
||
unique_visitors UInt32 DEFAULT 0 COMMENT '唯一访问者数'
|
||
) ENGINE = MergeTree() PARTITION BY toYYYYMM(created_at)
|
||
ORDER BY
|
||
(id, created_at) SETTINGS index_granularity = 8192 COMMENT '用于存储所有shorturl类型资源的统一表,集成了相关联的项目、团队、标签、QR码、渠道和收藏信息'; |