sqlschema ,set up react

parent 985cc365
Showing with 155 additions and 109 deletions
-- phpMyAdmin SQL Dump
-- version 5.1.1deb5ubuntu1
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Feb 20, 2025 at 02:02 PM
-- Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1
-- PHP Version: 8.1.2-1ubuntu2.20
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `webapp`
--
-- --------------------------------------------------------
--
-- Table structure for table `book`
--
CREATE TABLE `book` (
`id` int(10) UNSIGNED NOT NULL,
`owner` int(10) UNSIGNED NOT NULL,
`title` varchar(80) NOT NULL,
`author` varchar(80) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `loan`
--
CREATE TABLE `loan` (
`id_user` int(10) UNSIGNED NOT NULL,
`id_book` int(10) UNSIGNED NOT NULL,
`status` enum('reserved','started','ended','') NOT NULL,
`start` date NOT NULL,
`end` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE `user` (
`id` int(10) UNSIGNED NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(256) NOT NULL,
`role` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `book`
--
ALTER TABLE `book`
ADD PRIMARY KEY (`id`),
ADD KEY `owner` (`owner`);
--
-- Indexes for table `loan`
--
ALTER TABLE `loan`
ADD KEY `id_book` (`id_book`),
ADD KEY `id_user` (`id_user`);
--
-- Indexes for table `user`
--
ALTER TABLE `user`
ADD PRIMARY KEY (`id`);
--
-- Constraints for dumped tables
--
--
-- Constraints for table `book`
--
ALTER TABLE `book`
ADD CONSTRAINT `book_ibfk_1` FOREIGN KEY (`owner`) REFERENCES `user` (`id`);
--
-- Constraints for table `loan`
--
ALTER TABLE `loan`
ADD CONSTRAINT `loan_ibfk_1` FOREIGN KEY (`id_book`) REFERENCES `book` (`id`),
ADD CONSTRAINT `loan_ibfk_2` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
\ No newline at end of file
-- 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 Exam_WebPage
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema Exam_WebPage
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `Exam_WebPage` DEFAULT CHARACTER SET utf8 ;
USE `Exam_WebPage` ;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`User` (
`User_id` INT NOT NULL AUTO_INCREMENT,
`Email` VARCHAR(45) NOT NULL,
`password_hashed` VARCHAR(45) NOT NULL,
`is_verified` TINYINT NOT NULL,
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`User_id`),
UNIQUE INDEX `User_id_UNIQUE` (`User_id` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`Department`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`Department` (
`idDepartment` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idDepartment`),
UNIQUE INDEX `idDepartment_UNIQUE` (`idDepartment` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`Professor/Admin`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`Professor/Admin` (
`idProfessor/Admin` INT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(45) NOT NULL,
`Department_id` INT NULL,
PRIMARY KEY (`idProfessor/Admin`),
UNIQUE INDEX `idProfessor/Admin_UNIQUE` (`idProfessor/Admin` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`Course`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`Course` (
`idCourse` INT NOT NULL AUTO_INCREMENT,
`Coursecode` VARCHAR(45) NOT NULL,
`CourseName` VARCHAR(45) NOT NULL,
`Department_id` INT NOT NULL,
UNIQUE INDEX `idCourse_UNIQUE` (`idCourse` ASC) VISIBLE,
PRIMARY KEY (`idCourse`),
INDEX `Department_id_idx` (`Department_id` ASC) VISIBLE,
CONSTRAINT `Department_id`
FOREIGN KEY (`Department_id`)
REFERENCES `Exam_WebPage`.`Department` (`idDepartment`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`Exam`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`Exam` (
`idExam` INT NOT NULL AUTO_INCREMENT,
`idcourse` INT NOT NULL,
`IdAdmin` INT NOT NULL,
`academic_year` INT NOT NULL,
`Upload_Date` DATETIME NOT NULL,
`Filepath` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idExam`),
UNIQUE INDEX `idExam_UNIQUE` (`idExam` ASC) VISIBLE,
INDEX `idcourse_idx` (`idcourse` ASC) VISIBLE,
INDEX `idAdmin_idx` (`IdAdmin` ASC) VISIBLE,
CONSTRAINT `idcourse`
FOREIGN KEY (`idcourse`)
REFERENCES `Exam_WebPage`.`Course` (`idCourse`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `idAdmin`
FOREIGN KEY (`IdAdmin`)
REFERENCES `Exam_WebPage`.`Professor/Admin` (`idProfessor/Admin`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`UseVerificationRequest`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`UseVerificationRequest` (
`idUseVerificationRequest` INT NOT NULL AUTO_INCREMENT,
`User_id` INT NOT NULL,
`requested_at` DATETIME NOT NULL,
`Status` ENUM("Accepted", "Rejected", "Pending") NOT NULL,
`Admin_id` INT NOT NULL,
`handled_at` DATETIME NOT NULL,
PRIMARY KEY (`idUseVerificationRequest`),
UNIQUE INDEX `idUseVerificationRequest_UNIQUE` (`idUseVerificationRequest` ASC) VISIBLE,
INDEX `user_id_idx` (`User_id` ASC) VISIBLE,
INDEX `admin_id_idx` (`Admin_id` ASC) VISIBLE,
CONSTRAINT `user_id`
FOREIGN KEY (`User_id`)
REFERENCES `Exam_WebPage`.`User` (`User_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `admin_id`
FOREIGN KEY (`Admin_id`)
REFERENCES `Exam_WebPage`.`Professor/Admin` (`idProfessor/Admin`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Exam_WebPage`.`Report`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Exam_WebPage`.`Report` (
`idReport` INT NOT NULL AUTO_INCREMENT,
`exam_id` INT NOT NULL,
`submitted_by_user_id` INT NOT NULL,
`status` ENUM("Graded", "Pending") NOT NULL,
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`idReport`),
UNIQUE INDEX `idReport_UNIQUE` (`idReport` ASC) VISIBLE,
INDEX `exam_id_idx` (`exam_id` ASC) VISIBLE,
INDEX `reported_by_user_id_idx` (`submitted_by_user_id` ASC) VISIBLE,
CONSTRAINT `exam_id`
FOREIGN KEY (`exam_id`)
REFERENCES `Exam_WebPage`.`Exam` (`idExam`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `submitted_by_user_id`
FOREIGN KEY (`submitted_by_user_id`)
REFERENCES `Exam_WebPage`.`User` (`User_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;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment