From c8787ad1f7f72e64c717681d72c6554604ae7797 Mon Sep 17 00:00:00 2001 From: Misha1tigr Date: Mon, 20 May 2024 10:23:39 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=BB=D0=B0=D0=B14:=20=D0=B4=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0=D0=B2=20SQL=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=D0=BA=D1=80=D1=96=D0=BD=D1=88=D0=BE=D1=82?= =?UTF-8?q?=20ER-=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design/relational_scheme.png | Bin 0 -> 49754 bytes src/js/1.js | 1 + src/js/README.md | 3 + src/sql/README.md | 3 + src/sql/script.sql | 107 ++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 docs/design/relational_scheme.png create mode 100644 src/js/1.js create mode 100644 src/js/README.md create mode 100644 src/sql/README.md create mode 100644 src/sql/script.sql diff --git a/docs/design/relational_scheme.png b/docs/design/relational_scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..0df628835e41c73ed9fb431f56b66c7a3e4edd18 GIT binary patch literal 49754 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 Date: Mon, 20 May 2024 10:47:42 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B0=D0=BB=D0=B8=D0=B2?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BB=D0=B8=D1=88=D0=BA=D0=BE=D0=B2=D1=96=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1.js | 1 - src/README.md | 2 -- 2 files changed, 3 deletions(-) delete mode 100644 src/1.js delete mode 100644 src/README.md diff --git a/src/1.js b/src/1.js deleted file mode 100644 index 6ccd301..0000000 --- a/src/1.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = "" \ No newline at end of file diff --git a/src/README.md b/src/README.md deleted file mode 100644 index a4c4058..0000000 --- a/src/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# програмні коди -В цьому розділі розміщені програмні коди. From 3679f641e5fa8916f401e58a1ced659154d39eb1 Mon Sep 17 00:00:00 2001 From: Misha1tigr Date: Mon, 20 May 2024 11:27:12 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=B4=D0=BE=D0=B4=D0=B0=D0=B2=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BB=D1=8F=D1=86=D1=96=D0=B9=D0=BD=D1=83=20=D1=81=D1=85?= =?UTF-8?q?=D0=B5=D0=BC=D1=83=20=D1=82=D0=B0=20=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=20=D0=B4=D0=BE=20=D0=B2=D1=96=D0=B4=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2=D1=96=D0=B4=D0=BD=D0=B8=D1=85=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design/README.md | 3 ++ docs/software/README.md | 110 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/docs/design/README.md b/docs/design/README.md index ab53e23..0653d7f 100644 --- a/docs/design/README.md +++ b/docs/design/README.md @@ -115,3 +115,6 @@ Responce "0,*" --> "0,1" Account @enduml + +## Реляційна схема +![relational_schema](./relational_scheme.png) \ No newline at end of file diff --git a/docs/software/README.md b/docs/software/README.md index 2362239..bef4c7c 100644 --- a/docs/software/README.md +++ b/docs/software/README.md @@ -1,3 +1,113 @@ # Реалізація інформаційного та програмного забезпечення +## SQL-скрипт для створення та початкового наповнення бази даних +```sql +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + +-- ----------------------------------------------------- +-- Schema mydb +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema mydb +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ; +USE `mydb` ; + +-- ----------------------------------------------------- +-- Table `mydb`.`Account` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `mydb`.`Account` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `username` CHAR(255) NOT NULL, + `password` CHAR(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE, + UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `mydb`.`Survey` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `mydb`.`Survey` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `isPaused` TINYINT UNSIGNED NOT NULL, + `isNamed` TINYINT UNSIGNED NOT NULL, + `name` CHAR(255) NULL, + `duration` CHAR(255) NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE, + CONSTRAINT `fk_Survey_Account1` + FOREIGN KEY (`id`) + REFERENCES `mydb`.`Account` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `mydb`.`Question` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `mydb`.`Question` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `Text` CHAR(255) NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE, + CONSTRAINT `fk_Question_Survey1` + FOREIGN KEY (`id`) + REFERENCES `mydb`.`Survey` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `mydb`.`Response` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `mydb`.`Response` ( + `id` INT UNSIGNED NULL AUTO_INCREMENT, + `Value` VARCHAR(16384) NULL, + UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE, + PRIMARY KEY (`id`), + CONSTRAINT `fk_Response_Question` + FOREIGN KEY (`id`) + REFERENCES `mydb`.`Question` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Response_Account1` + FOREIGN KEY (`id`) + REFERENCES `mydb`.`Account` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `mydb`.`Link` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `mydb`.`Link` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `uses` INT NOT NULL, + `responces` INT NOT NULL, + `usageLimit` INT NULL, + `responceLimit` INT NULL, + `path` CHAR(32) NOT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `fk_Link_Survey1` + FOREIGN KEY (`id`) + REFERENCES `mydb`.`Survey` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; +``` \ No newline at end of file