Файл: Отчет по практической работе 1 Построение erмодели для заданной предметной области.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 47

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«КАБАРДИНО – БАЛКАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

им. Х.М. Бербекова»

Институт искусственного интеллекта и цифровых технологий
Кафедра компьютерных технологий

и информационной безопасности

Отчет по практической работе №1

«Построение ER-модели для заданной предметной области»

Выполнил: студент 1 г.о. ИВТ Афаунова В.А

Преподаватель: кандидат физ.-мат. наук, доцент кафедры КТиИБ ИИИиЦТ КБГУ Калмыков Р.М.

Нальчик 2023

Цель работы: проектирование информационно-логической модели базы данных при помощи case-средства mySQL Workbench

Процесс создания и конечный вариант модели БД представлен на снимках ниже:

Скриптинг:

-- 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 kontora

-- -----------------------------------------------------

-- -----------------------------------------------------

-- Schema kontora

-- -----------------------------------------------------


CREATE SCHEMA IF NOT EXISTS `kontora` DEFAULT CHARACTER SET utf8 ;

USE `kontora` ;

-- -----------------------------------------------------

-- Table `kontora`.`k_staff`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_staff` (

`staff_num` INT NOT NULL AUTO_INCREMENT,

`staff_name` VARCHAR(45) NOT NULL,

`staff_post` VARCHAR(45) NULL,

`staff_hiredate` DATE NULL,

`staff_termdate` DATE NULL,

`k_dept_dept_num` INT NOT NULL,

PRIMARY KEY (`staff_num`),

INDEX `fk_k_staff_k_dept_idx` (`k_dept_dept_num` ASC) VISIBLE,

CONSTRAINT `fk_k_staff_k_dept`

FOREIGN KEY (`k_dept_dept_num`)

REFERENCES `kontora`.`k_dept` (`dept_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_dept`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_dept` (

`dept_num` INT NOT NULL AUTO_INCREMENT,

`dept_full_name` VARCHAR(45) NULL,

`dept_short_name` VARCHAR(10) NOT NULL,

`k_staff_staff_num` INT NOT NULL,

PRIMARY KEY (`dept_num`),

INDEX `fk_k_dept_k_staff1_idx` (`k_staff_staff_num` ASC) VISIBLE,

CONSTRAINT `fk_k_dept_k_staff1`

FOREIGN KEY (`k_staff_staff_num`)

REFERENCES `kontora`.`k_staff` (`staff_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_firm`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_firm` (

`firm_num` INT NOT NULL AUTO_INCREMENT,

`firm_name` VARCHAR(45) NOT NULL,

`firm_addr` VARCHAR(45) NULL,

`firm_phone` VARCHAR(20) NULL,

PRIMARY KEY (`firm_num`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_contract`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_contract` (

`contract_num` INT NOT NULL AUTO_INCREMENT,

`contract_date` DATE NOT NULL,

`contract_type` ENUM('A', 'B', 'C') NOT NULL,

`k_firm_firm_num` INT NOT NULL,

`k_staff_staff_num` INT NOT NULL,

PRIMARY KEY (`contract_num`),

INDEX `fk_k_contract_k_firm1_idx` (`k_firm_firm_num` ASC) VISIBLE,

INDEX `fk_k_contract_k_staff1_idx` (`k_staff_staff_num` ASC) VISIBLE,

CONSTRAINT `fk_k_contract_k_firm1`

FOREIGN KEY (`k_firm_firm_num`)

REFERENCES `kontora`.`k_firm` (`firm_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_k_contract_k_staff1`

FOREIGN KEY (`k_staff_staff_num`)

REFERENCES `kontora`.`k_staff` (`staff_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_bill`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_bill` (

`bill_num` INT NOT NULL AUTO_INCREMENT,

`bill_date` DATE NULL,

`bill_sum` DECIMAL(9,2) NULL,

`bill_term` DATE NULL,

`bill_peni` DECIMAL(6,2) NULL,

`k_contract_contract_num` INT NOT NULL,

PRIMARY KEY (`bill_num`, `k_contract_contract_num`),

INDEX `fk_k_bill_k_contract1_idx` (`k_contract_contract_num` ASC) VISIBLE,

CONSTRAINT `fk_k_bill_k_contract1`

FOREIGN KEY (`k_contract_contract_num`)

REFERENCES `kontora`.`k_contract` (`contract_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_payment`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_payment` (

`payment_num` INT NOT NULL AUTO_INCREMENT,

`payment_date` DATE NULL,

`payment_sum` DECIMAL(9,2) NULL,

`k_bill_bill_num` INT NOT NULL,

PRIMARY KEY (`payment_num`),

INDEX `fk_k_payment_k_bill1_idx` (`k_bill_bill_num` ASC) VISIBLE,

CONSTRAINT `fk_k_payment_k_bill1`

FOREIGN KEY (`k_bill_bill_num`)

REFERENCES `kontora`.`k_bill` (`bill_num`)


ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_price`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_price` (

`price_num` INT NOT NULL AUTO_INCREMENT,

`price_name` VARCHAR(45) NOT NULL,

`price_sum` DECIMAL(9,2) NULL,

`price_type` VARCHAR(1) NULL,

PRIMARY KEY (`price_num`))

ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `kontora`.`k_protocol`

-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `kontora`.`k_protocol` (

`k_bill_bill_num` INT NOT NULL,

`k_price_price_num` INT NOT NULL,

`kolvo` INT NOT NULL,

`price_sum` DECIMAL(9,2) NOT NULL,

PRIMARY KEY (`k_bill_bill_num`, `k_price_price_num`),

INDEX `fk_k_bill_has_k_price_k_price1_idx` (`k_price_price_num` ASC) VISIBLE,

INDEX `fk_k_bill_has_k_price_k_bill1_idx` (`k_bill_bill_num` ASC) VISIBLE,

CONSTRAINT `fk_k_bill_has_k_price_k_bill1`

FOREIGN KEY (`k_bill_bill_num`)

REFERENCES `kontora`.`k_bill` (`bill_num`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_k_bill_has_k_price_k_price1`

FOREIGN KEY (`k_price_price_num`)

REFERENCES `kontora`.`k_price` (`price_num`)

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;

Вывод: научились проектировать информационно-логическую модель базы данных при помощи case-средства mySQL Workbench