61 lines
1.7 KiB
SQL
61 lines
1.7 KiB
SQL
CREATE TABLE content_types (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(64) NOT NULL,
|
|
slug VARCHAR(64) NOT NULL UNIQUE,
|
|
description TEXT NULL,
|
|
created_at TIMESTAMP NULL,
|
|
updated_at TIMESTAMP NULL
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE categories (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
content_type_id INT UNSIGNED NOT NULL,
|
|
parent_id INT UNSIGNED NULL,
|
|
|
|
name VARCHAR(128) NOT NULL,
|
|
slug VARCHAR(128) NOT NULL,
|
|
|
|
description TEXT NULL,
|
|
image VARCHAR(255) NULL,
|
|
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
sort_order INT DEFAULT 0,
|
|
|
|
created_at TIMESTAMP NULL,
|
|
updated_at TIMESTAMP NULL,
|
|
|
|
UNIQUE KEY uniq_category_slug (content_type_id, slug),
|
|
FOREIGN KEY (content_type_id) REFERENCES content_types(id),
|
|
FOREIGN KEY (parent_id) REFERENCES categories(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE category_seo (
|
|
category_id INT UNSIGNED PRIMARY KEY,
|
|
meta_title VARCHAR(255) NULL,
|
|
meta_description VARCHAR(255) NULL,
|
|
meta_keywords VARCHAR(255) NULL,
|
|
canonical_url VARCHAR(255) NULL,
|
|
|
|
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE category_translations (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
category_id INT UNSIGNED NOT NULL,
|
|
locale CHAR(2) NOT NULL,
|
|
|
|
name VARCHAR(128) NOT NULL,
|
|
description TEXT NULL,
|
|
|
|
UNIQUE KEY uniq_translation (category_id, locale),
|
|
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE artwork_category (
|
|
artwork_id INT UNSIGNED NOT NULL,
|
|
category_id INT UNSIGNED NOT NULL,
|
|
PRIMARY KEY (artwork_id, category_id),
|
|
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|