diff --git a/database/schema.sql b/database/schema.sql index c907bd8d..d8fefd9e 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- St 20. leden 2016, 19:50:50 CET +-- Čt 21. leden 2016, 01:17:14 CET -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering @@ -12,22 +12,17 @@ SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- ----------------------------------------------------- --- Schema minicms +-- Table `users` -- ----------------------------------------------------- -CREATE SCHEMA IF NOT EXISTS `minicms` DEFAULT CHARACTER SET utf8 ; -USE `minicms` ; - --- ----------------------------------------------------- --- Table `minicms`.`user` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`user` ( +CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(64) NOT NULL COMMENT 'E-mail is used as a contact and also as a username', - `username` VARCHAR(64) NOT NULL, + `username` VARCHAR(64) NOT NULL COMMENT 'Username can be used also for login. Default value is users email.', `password` VARCHAR(128) NOT NULL COMMENT 'Password hash', + `role` ENUM('visitor', 'editor', 'admin') NOT NULL DEFAULT 'visitor' COMMENT 'User\'s role determines his permissions in the system.', `remember_token` VARCHAR(128) NULL DEFAULT NULL COMMENT 'Token used for \"remember me\" feature', `name` VARCHAR(128) NULL DEFAULT NULL, - `status` ENUM('deleted', 'blocked', 'active') NULL DEFAULT 'active' COMMENT 'Username can be used also for login. Default value is users email.', + `status` ENUM('deleted', 'blocked', 'active') NOT NULL DEFAULT 'active', PRIMARY KEY (`id`), UNIQUE INDEX `email_UNIQUE` (`email` ASC)) ENGINE = InnoDB @@ -35,9 +30,9 @@ COMMENT = 'Table with users who are allowed to log into system'; -- ----------------------------------------------------- --- Table `minicms`.`module` +-- Table `modules` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`module` ( +CREATE TABLE IF NOT EXISTS `modules` ( `handler` VARCHAR(64) NOT NULL, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `name` VARCHAR(64) NOT NULL, @@ -47,9 +42,9 @@ ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `minicms`.`file` +-- Table `files` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`file` ( +CREATE TABLE IF NOT EXISTS `files` ( `id` INT NOT NULL, `user_id` INT NOT NULL, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -60,7 +55,7 @@ CREATE TABLE IF NOT EXISTS `minicms`.`file` ( INDEX `fk_file_user1_idx` (`user_id` ASC), CONSTRAINT `fk_file_user1` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB @@ -68,9 +63,9 @@ COMMENT = 'Table containing files which were uploaded into system.'; -- ----------------------------------------------------- --- Table `minicms`.`content` +-- Table `contents` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`content` ( +CREATE TABLE IF NOT EXISTS `contents` ( `id` INT NOT NULL, `user_id` INT NOT NULL, `module_handler` VARCHAR(64) NOT NULL, @@ -95,17 +90,17 @@ CREATE TABLE IF NOT EXISTS `minicms`.`content` ( INDEX `fk_content_file1_idx` (`title_photo` ASC), CONSTRAINT `fk_content_user1` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_content_module1` FOREIGN KEY (`module_handler`) - REFERENCES `minicms`.`module` (`handler`) + REFERENCES `modules` (`handler`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_content_file1` FOREIGN KEY (`title_photo`) - REFERENCES `minicms`.`file` (`id`) + REFERENCES `files` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE = InnoDB @@ -113,9 +108,9 @@ COMMENT = 'Table with all content pages.'; -- ----------------------------------------------------- --- Table `minicms`.`content_history` +-- Table `content_history` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`content_history` ( +CREATE TABLE IF NOT EXISTS `content_history` ( `id` INT NOT NULL, `user_id` INT NOT NULL, `content_id` INT NOT NULL, @@ -131,12 +126,12 @@ CREATE TABLE IF NOT EXISTS `minicms`.`content_history` ( INDEX `fk_content_history_content1_idx` (`content_id` ASC), CONSTRAINT `fk_content_history_users` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_content_history_content1` FOREIGN KEY (`content_id`) - REFERENCES `minicms`.`content` (`id`) + REFERENCES `contents` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB @@ -144,9 +139,9 @@ COMMENT = 'Table for holding history of changes on some content.'; -- ----------------------------------------------------- --- Table `minicms`.`widget_type` +-- Table `widget_types` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`widget_type` ( +CREATE TABLE IF NOT EXISTS `widget_types` ( `handler` VARCHAR(64) NOT NULL COMMENT 'Class wich handles everything about this widget type', `name` VARCHAR(64) NOT NULL COMMENT 'Name is used only in admin for better readability.', `description` TEXT NULL DEFAULT NULL COMMENT 'This field also improves readability.', @@ -156,9 +151,9 @@ COMMENT = 'Widget type table contains information about all installed widgets. T -- ----------------------------------------------------- --- Table `minicms`.`widget` +-- Table `widgets` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`widget` ( +CREATE TABLE IF NOT EXISTS `widgets` ( `id` INT NOT NULL, `widget_type_handler` VARCHAR(64) NOT NULL, `user_id` INT NOT NULL COMMENT 'User ID who created this widget', @@ -171,12 +166,12 @@ CREATE TABLE IF NOT EXISTS `minicms`.`widget` ( INDEX `fk_widget_widget_type1_idx` (`widget_type_handler` ASC), CONSTRAINT `fk_widget_user1` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_widget_widget_type1` FOREIGN KEY (`widget_type_handler`) - REFERENCES `minicms`.`widget_type` (`handler`) + REFERENCES `widget_types` (`handler`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB @@ -184,9 +179,9 @@ COMMENT = 'Widget is a small piece of content, which can be inserted into widget -- ----------------------------------------------------- --- Table `minicms`.`widget_area` +-- Table `widget_areas` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`widget_area` ( +CREATE TABLE IF NOT EXISTS `widget_areas` ( `id` INT NOT NULL, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, @@ -200,9 +195,9 @@ COMMENT = 'Widget area is container for widgets. This container is inserted into -- ----------------------------------------------------- --- Table `minicms`.`widget_in_widget_area` +-- Table `widget_in_widget_area` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`widget_in_widget_area` ( +CREATE TABLE IF NOT EXISTS `widget_in_widget_area` ( `widget_id` INT NOT NULL, `widget_area_id` INT NOT NULL, `position` INT NOT NULL COMMENT 'Which position should the widget take?', @@ -212,21 +207,21 @@ CREATE TABLE IF NOT EXISTS `minicms`.`widget_in_widget_area` ( INDEX `position` (`position` ASC), CONSTRAINT `fk_widget_has_widget_area_widget1` FOREIGN KEY (`widget_id`) - REFERENCES `minicms`.`widget` (`id`) + REFERENCES `widgets` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_widget_has_widget_area_widget_area1` FOREIGN KEY (`widget_area_id`) - REFERENCES `minicms`.`widget_area` (`id`) + REFERENCES `widget_areas` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `minicms`.`custom_field` +-- Table `custom_fields` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`custom_field` ( +CREATE TABLE IF NOT EXISTS `custom_fields` ( `id` INT NOT NULL, `handler` VARCHAR(64) NOT NULL COMMENT 'Class name, which handles saving and retrieving given custom field.', `name` VARCHAR(128) NULL, @@ -242,9 +237,9 @@ COMMENT = 'List of all custom fields which may be used for extending some part o -- ----------------------------------------------------- --- Table `minicms`.`user_has_custom_field` +-- Table `user_has_custom_field` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`user_has_custom_field` ( +CREATE TABLE IF NOT EXISTS `user_has_custom_field` ( `user_id` INT NOT NULL, `custom_field_id` INT NOT NULL, `value` TEXT NOT NULL, @@ -253,21 +248,21 @@ CREATE TABLE IF NOT EXISTS `minicms`.`user_has_custom_field` ( INDEX `fk_user_has_custom_field_user1_idx` (`user_id` ASC), CONSTRAINT `fk_user_has_custom_field_user1` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_user_has_custom_field_custom_field1` FOREIGN KEY (`custom_field_id`) - REFERENCES `minicms`.`custom_field` (`id`) + REFERENCES `custom_fields` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `minicms`.`custom_field_type` +-- Table `custom_field_types` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`custom_field_type` ( +CREATE TABLE IF NOT EXISTS `custom_field_types` ( `id` INT NOT NULL, `name` VARCHAR(45) NOT NULL, `custom_field_id` INT NOT NULL, @@ -276,7 +271,7 @@ CREATE TABLE IF NOT EXISTS `minicms`.`custom_field_type` ( INDEX `fk_custom_field_type_custom_field1_idx` (`custom_field_id` ASC), CONSTRAINT `fk_custom_field_type_custom_field1` FOREIGN KEY (`custom_field_id`) - REFERENCES `minicms`.`custom_field` (`id`) + REFERENCES `custom_fields` (`id`) ON DELETE RESTRICT ON UPDATE NO ACTION) ENGINE = InnoDB @@ -284,9 +279,9 @@ COMMENT = 'List of all custom field types.'; -- ----------------------------------------------------- --- Table `minicms`.`module_has_custom_field` +-- Table `module_has_custom_field` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`module_has_custom_field` ( +CREATE TABLE IF NOT EXISTS `module_has_custom_field` ( `module_handler` VARCHAR(64) NOT NULL, `custom_field_id` INT NOT NULL, `value` TEXT NOT NULL, @@ -295,21 +290,21 @@ CREATE TABLE IF NOT EXISTS `minicms`.`module_has_custom_field` ( INDEX `fk_module_has_custom_field_module1_idx` (`module_handler` ASC), CONSTRAINT `fk_module_has_custom_field_module1` FOREIGN KEY (`module_handler`) - REFERENCES `minicms`.`module` (`handler`) + REFERENCES `modules` (`handler`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_module_has_custom_field_custom_field1` FOREIGN KEY (`custom_field_id`) - REFERENCES `minicms`.`custom_field` (`id`) + REFERENCES `custom_fields` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- --- Table `minicms`.`action_log_type` +-- Table `action_log_types` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`action_log_type` ( +CREATE TABLE IF NOT EXISTS `action_log_types` ( `id` INT NOT NULL, `name` VARCHAR(45) NULL, PRIMARY KEY (`id`)) @@ -318,9 +313,9 @@ COMMENT = 'List of all types which can be logged.'; -- ----------------------------------------------------- --- Table `minicms`.`action_log` +-- Table `action_log` -- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `minicms`.`action_log` ( +CREATE TABLE IF NOT EXISTS `action_log` ( `id` INT NOT NULL, `type_id` INT NOT NULL, `user_id` INT NOT NULL, @@ -331,12 +326,12 @@ CREATE TABLE IF NOT EXISTS `minicms`.`action_log` ( INDEX `fk_action_log_user1_idx` (`user_id` ASC), CONSTRAINT `fk_action_log_action_log_type1` FOREIGN KEY (`type_id`) - REFERENCES `minicms`.`action_log_type` (`id`) + REFERENCES `action_log_types` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_action_log_user1` FOREIGN KEY (`user_id`) - REFERENCES `minicms`.`user` (`id`) + REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB