Файл: Отчет по практической работе 1 Построение erмодели для заданной предметной области.docx
Добавлен: 22.11.2023
Просмотров: 170
Скачиваний: 6
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 ACTIONON 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 ACTIONON 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 ACTIONON UPDATE NO ACTION,CONSTRAINT `fk_k_contract_k_staff1`FOREIGN KEY (`k_staff_staff_num`)REFERENCES `kontora`.`k_staff` (`staff_num`)ON DELETE NO ACTIONON 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 ACTIONON 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