Reklama
Pokazuje wyniki od 1 do 2 z 2

Temat: [Bazy danych, MySQL] Sprawdzenie poprawności związków; EER

  1. #1
    Avatar Jaziq
    Data rejestracji
    2007
    Położenie
    Wrocław
    Wiek
    33
    Posty
    1,233
    Siła reputacji
    18

    Domyślny [Bazy danych, MySQL] Sprawdzenie poprawności związków; EER

    Cześć, mógłby ktoś rzucić okiem na mój projekt bazy danych dla kina i powiedzieć, czy związki pomiędzy tabelami wyglądają ok?



    I wygenerowany kod:
    Kod:
    -- MySQL Script generated by MySQL Workbench
    -- 05/07/14 18:29:25
    -- Model: New Model    Version: 1.0
    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='TRADITIONAL,ALLOW_INVALID_DATES';
    
    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
    CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
    USE `mydb` ;
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Gatunki`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Gatunki` (
      `idGatunki` INT NOT NULL,
      `nazwa_gatunku` VARCHAR(45) NOT NULL,
      PRIMARY KEY (`idGatunki`),
      UNIQUE INDEX `idGatunki_UNIQUE` (`idGatunki` ASC))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Filmy`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Filmy` (
      `idFilmy` INT NOT NULL AUTO_INCREMENT,
      `nazwa` VARCHAR(45) NOT NULL,
      `czas_trwania` INT NOT NULL,
      `opis` VARCHAR(500) NULL,
      `Gatunki_idGatunki` INT NOT NULL,
      PRIMARY KEY (`idFilmy`, `nazwa`),
      INDEX `fk_Filmy_Gatunki1_idx` (`Gatunki_idGatunki` ASC),
      UNIQUE INDEX `idFilmy_UNIQUE` (`idFilmy` ASC),
      CONSTRAINT `fk_Filmy_Gatunki1`
        FOREIGN KEY (`Gatunki_idGatunki`)
        REFERENCES `mydb`.`Gatunki` (`idGatunki`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Sale_kinowe`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Sale_kinowe` (
      `idSale_kinowe` INT NOT NULL,
      `ilosc_miejsc` VARCHAR(45) NOT NULL,
      PRIMARY KEY (`idSale_kinowe`),
      UNIQUE INDEX `idSale_kinowe_UNIQUE` (`idSale_kinowe` ASC))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Seanse`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Seanse` (
      `idSeans` INT NOT NULL AUTO_INCREMENT,
      `data` DATETIME NOT NULL,
      `Filmy_idFilmy1` INT NOT NULL,
      `Filmy_nazwa` VARCHAR(45) NOT NULL,
      `Sale_kinowe_idSale_kinowe` INT NOT NULL,
      `Publiczny` TINYINT(1) NOT NULL,
      PRIMARY KEY (`idSeans`),
      INDEX `fk_Seanse_Filmy1_idx` (`Filmy_idFilmy1` ASC, `Filmy_nazwa` ASC),
      INDEX `fk_Seanse_Sale_kinowe1_idx` (`Sale_kinowe_idSale_kinowe` ASC),
      UNIQUE INDEX `idSeans_UNIQUE` (`idSeans` ASC),
      CONSTRAINT `fk_Seanse_Filmy1`
        FOREIGN KEY (`Filmy_idFilmy1` , `Filmy_nazwa`)
        REFERENCES `mydb`.`Filmy` (`idFilmy` , `nazwa`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Seanse_Sale_kinowe1`
        FOREIGN KEY (`Sale_kinowe_idSale_kinowe`)
        REFERENCES `mydb`.`Sale_kinowe` (`idSale_kinowe`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Użytkownicy`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Użytkownicy` (
      `idUżytkownicy` INT NOT NULL,
      `Imie` VARCHAR(45) NOT NULL,
      `Nazwisko` VARCHAR(45) NOT NULL,
      `Nr_telefonu` VARCHAR(12) NOT NULL,
      PRIMARY KEY (`idUżytkownicy`))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Rezerwacje`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Rezerwacje` (
      `idrezerwacja` INT NOT NULL AUTO_INCREMENT,
      `siedzenie_rzad` INT NOT NULL,
      `siedzenie_kolumna` INT NOT NULL,
      `Seanse_idSeans` INT NOT NULL,
      `Seanse_Filmy_idFilmy` INT NOT NULL,
      `Seanse_Obsługa` INT NOT NULL,
      `Użytkownicy_idUżytkownicy` INT NOT NULL,
      PRIMARY KEY (`idrezerwacja`),
      INDEX `fk_Rezerwacje_Seanse1_idx` (`Seanse_idSeans` ASC, `Seanse_Filmy_idFilmy` ASC, `Seanse_Obsługa` ASC),
      UNIQUE INDEX `idrezerwacja_UNIQUE` (`idrezerwacja` ASC),
      INDEX `fk_Rezerwacje_Użytkownicy1_idx` (`Użytkownicy_idUżytkownicy` ASC),
      CONSTRAINT `fk_Rezerwacje_Seanse1`
        FOREIGN KEY (`Seanse_idSeans`)
        REFERENCES `mydb`.`Seanse` (`idSeans`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Rezerwacje_Użytkownicy1`
        FOREIGN KEY (`Użytkownicy_idUżytkownicy`)
        REFERENCES `mydb`.`Użytkownicy` (`idUżytkownicy`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Ulgi`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Ulgi` (
      `idUlgi` INT NOT NULL,
      `nazwa_ulgi` VARCHAR(45) NOT NULL,
      `wysokosc_ulgi` DECIMAL(2) NOT NULL,
      PRIMARY KEY (`idUlgi`),
      UNIQUE INDEX `idUlgi_UNIQUE` (`idUlgi` ASC))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Bilety`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Bilety` (
      `idBilety` INT NOT NULL,
      `Cena` DECIMAL(2) NOT NULL,
      `Ulgi_idUlgi` INT NOT NULL,
      `Seanse_idSeans` INT NOT NULL,
      `Seanse_Filmy_idFilmy` INT NOT NULL,
      `Seanse_Obsługa` INT NOT NULL,
      PRIMARY KEY (`idBilety`, `Seanse_idSeans`, `Seanse_Filmy_idFilmy`, `Seanse_Obsługa`),
      INDEX `fk_Bilety_Ulgi1_idx` (`Ulgi_idUlgi` ASC),
      INDEX `fk_Bilety_Seanse1_idx` (`Seanse_idSeans` ASC, `Seanse_Filmy_idFilmy` ASC, `Seanse_Obsługa` ASC),
      UNIQUE INDEX `idBilety_UNIQUE` (`idBilety` ASC),
      CONSTRAINT `fk_Bilety_Ulgi1`
        FOREIGN KEY (`Ulgi_idUlgi`)
        REFERENCES `mydb`.`Ulgi` (`idUlgi`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Bilety_Seanse1`
        FOREIGN KEY (`Seanse_idSeans`)
        REFERENCES `mydb`.`Seanse` (`idSeans`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Aktorzy`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Aktorzy` (
      `idAktorzy` INT NOT NULL AUTO_INCREMENT,
      `Imie` VARCHAR(45) NOT NULL,
      `Nazwisko` VARCHAR(45) NOT NULL,
      PRIMARY KEY (`idAktorzy`),
      UNIQUE INDEX `idAktorzy_UNIQUE` (`idAktorzy` ASC))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Adresy`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Adresy` (
      `idAdresy` INT NOT NULL,
      `Ulica` VARCHAR(60) NULL,
      `Numer domu` INT NOT NULL,
      `Numer mieszkania` INT NULL,
      `Miasto` VARCHAR(45) NOT NULL,
      `Kod Pocztowy` VARCHAR(6) NOT NULL,
      PRIMARY KEY (`idAdresy`),
      UNIQUE INDEX `idAdresy_UNIQUE` (`idAdresy` ASC))
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Pracownicy`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Pracownicy` (
      `idPracownicy` INT NOT NULL,
      `Imię` VARCHAR(45) NOT NULL,
      `Nazwisko` VARCHAR(45) NOT NULL,
      `Adresy_idAdresy` INT NOT NULL,
      PRIMARY KEY (`idPracownicy`),
      UNIQUE INDEX `idPracownicy_UNIQUE` (`idPracownicy` ASC),
      INDEX `fk_Pracownicy_Adresy1_idx` (`Adresy_idAdresy` ASC),
      CONSTRAINT `fk_Pracownicy_Adresy1`
        FOREIGN KEY (`Adresy_idAdresy`)
        REFERENCES `mydb`.`Adresy` (`idAdresy`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Gdzie_grali`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Gdzie_grali` (
      `Filmy_idFilmy` INT NOT NULL,
      `Filmy_nazwa` VARCHAR(45) NOT NULL,
      `Aktorzy_idAktorzy` INT NOT NULL,
      PRIMARY KEY (`Filmy_idFilmy`, `Filmy_nazwa`, `Aktorzy_idAktorzy`),
      INDEX `fk_Filmy_has_Aktorzy_Aktorzy1_idx` (`Aktorzy_idAktorzy` ASC),
      INDEX `fk_Filmy_has_Aktorzy_Filmy1_idx` (`Filmy_idFilmy` ASC, `Filmy_nazwa` ASC),
      CONSTRAINT `fk_Filmy_has_Aktorzy_Filmy1`
        FOREIGN KEY (`Filmy_idFilmy` , `Filmy_nazwa`)
        REFERENCES `mydb`.`Filmy` (`idFilmy` , `nazwa`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Filmy_has_Aktorzy_Aktorzy1`
        FOREIGN KEY (`Aktorzy_idAktorzy`)
        REFERENCES `mydb`.`Aktorzy` (`idAktorzy`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`Dyzury_pracownikow`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`Dyzury_pracownikow` (
      `Seanse_idSeans` INT NOT NULL,
      `Seanse_Filmy_idFilmy` INT NOT NULL,
      `Seanse_Obsługa` INT NOT NULL,
      `Pracownicy_idPracownicy` INT NOT NULL,
      PRIMARY KEY (`Seanse_idSeans`, `Seanse_Filmy_idFilmy`, `Seanse_Obsługa`, `Pracownicy_idPracownicy`),
      INDEX `fk_Seanse_has_Pracownicy_Pracownicy1_idx` (`Pracownicy_idPracownicy` ASC),
      INDEX `fk_Seanse_has_Pracownicy_Seanse1_idx` (`Seanse_idSeans` ASC, `Seanse_Filmy_idFilmy` ASC, `Seanse_Obsługa` ASC),
      CONSTRAINT `fk_Seanse_has_Pracownicy_Seanse1`
        FOREIGN KEY (`Seanse_idSeans`)
        REFERENCES `mydb`.`Seanse` (`idSeans`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Seanse_has_Pracownicy_Pracownicy1`
        FOREIGN KEY (`Pracownicy_idPracownicy`)
        REFERENCES `mydb`.`Pracownicy` (`idPracownicy`)
        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;
    Ostatnio zmieniony przez Jaziq : 07-05-2014, 18:29
    ~

  2. #2

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Ok, powiem co mi nie pasuje tak ogółem:

    1) Nazwy kluczy głównych , jak masz identyfikator to po prostu id. Generalnie lepiej nie uzywac takich nazw do nazywania relacji ( IMO ).
    2) Tabela Gdzie_Grali: To jest typowy pivot table, nie potrzebujesz relacji po nazwie. Łaczysz tylko id aktorów z id filmu i zdobywasz nazwę po rekordzie filmu
    3) Tabela Seanse: To samo, usuń relację po nazwie filmu
    4) Tabela Bilety: Generalnie tutaj duplikuujesz dane w relacji Filmu z Biletem, a do Filmu można dojść po seansie, którego ID masz zapisane na bilecie. Więc ja na Twoim miejscu wykasowałbym to pole. I co robi ,,Seanse_Obsluga" ?
    5) Tabela Dyzury_Pracownikow: J/w
    6) Tabela rezerwacje: Moim zdaniem, powinno to być przypisane do Biletu, zakładając, że trzymamy się logiki biznesowej jakiegoś kina np, Rezerwacja jest przypisana do biletu, nie do seansu.

  3. Reklama
Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Baza mysql - sprawdzenie poprawnosci.
    Przez Criss26 w dziale Programowanie
    Odpowiedzi: 3
    Ostatni post: 13-05-2015, 22:16
  2. [HTML/PHP] Tworzenie podstron na podstawie bazy MySQL
    Przez John Galt w dziale Programowanie
    Odpowiedzi: 1
    Ostatni post: 12-10-2013, 19:28
  3. [Podstawy] Tworzenie bazy danych MySQL oraz obsługa silnika TFS*
    Przez Midas w dziale Artykuły developerskie
    Odpowiedzi: 52
    Ostatni post: 15-10-2011, 12:39
  4. Update bazy danych
    Przez Tomix w dziale Niusy
    Odpowiedzi: 30
    Ostatni post: 02-12-2009, 19:11

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •