48 lines
1.7 KiB
SQL
48 lines
1.7 KiB
SQL
-- 创建相册表
|
|
CREATE TABLE IF NOT EXISTS albums (
|
|
id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
document TEXT NOT NULL,
|
|
description TEXT,
|
|
cover_image_id TEXT,
|
|
image_count INTEGER NOT NULL DEFAULT 0, -- 新增图片数量字段
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME NOT NULL
|
|
);
|
|
|
|
-- 创建图片表
|
|
CREATE TABLE IF NOT EXISTS images (
|
|
id TEXT PRIMARY KEY,
|
|
album_id TEXT NOT NULL,
|
|
filename TEXT NOT NULL,
|
|
original_url TEXT,
|
|
title TEXT,
|
|
description TEXT,
|
|
file_size INTEGER NOT NULL,
|
|
width INTEGER NOT NULL,
|
|
height INTEGER NOT NULL,
|
|
mime_type TEXT NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
FOREIGN KEY (album_id) REFERENCES albums(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 创建收藏表
|
|
CREATE TABLE IF NOT EXISTS favorites (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
image_id TEXT NOT NULL,
|
|
album_id TEXT NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (album_id) REFERENCES albums(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- 创建索引以提高查询性能
|
|
CREATE INDEX IF NOT EXISTS idx_albums_created_at ON albums(created_at);
|
|
CREATE INDEX IF NOT EXISTS idx_images_album_id ON images(album_id);
|
|
CREATE INDEX IF NOT EXISTS idx_images_created_at ON images(created_at);
|
|
CREATE INDEX IF NOT EXISTS idx_albums_title ON albums(title);
|
|
CREATE INDEX IF NOT EXISTS idx_favorites_user_id ON favorites(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_favorites_image_id ON favorites(image_id);
|
|
CREATE INDEX IF NOT EXISTS idx_favorites_album_id ON favorites(album_id);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_favorites_user_image ON favorites(user_id, image_id); |