Fórum Dúvida sobre Banco de Dados #619678
20/03/2023
0
Segue o Código abaixo:
def update():
match txt:
case "Código": # Código
fazTipo()
fazData()
comando = f''UPDATE ingresso SET'' \
f'' cod = "{codigo.get()}",'' \
f'' WHERE cod = "{int(Descricao.get())}"''
cursor.execute(comando)
conexao.commit() ## <<<< editar o banco de dados
novaReservaMsgmLabel.configure(text=f''Dados atualizados com sucesso: '' \
f''\n\nAssento: {assento.get()}'' \
f''\nValor: R${valor.get()}'' \
f''\nNome: {nome.get()}'' \
f''\nSala: {sala.get()}'' \
f''\nTipo: '' \
f''\n\n=======Adcionado======='' \
f''\nData:'' \
f''\nHora:'' \
f''\n======================='')
return 0
case "Nome": # Nome
fazTipo()
fazData()
comando = f''UPDATE ingresso SET'' \
f'' nome = "{nome.get()}",''\
f'' sala_sala = "{sala.get()}",'' \
f'' sala_assento = "{assento.get()}",'' \
f'' WHERE nome = "{Descricao.get()}" \
AND sala_sala = "{DescricaoParaSala.get()}"\
AND assento_assento = "{DescricaoParaAssento.get()}"''
print(comando)
cursor.execute(comando)
conexao.commit() ## <<<< editar o banco de dados
novaReservaMsgmLabel.configure(text=f''Dados atualizados com sucesso: '' \
f''\n\nAssento: {assento.get()}'' \
f''\nValor: R${valor.get()}'' \
f''\nNome: {nome.get()}'' \
f''\nSala: {sala.get()}'' \
f''\nTipo: '' \
f''\n\n=======Adcionado======='' \
f''\nData:'' \
f''\nHora:'' \
f''\n======================='')
return 0
case "Sala": # Sala
fazTipo()
fazData()
comando = f''UPDATE sala SET'' \
f'' sala = "{sala.get()}",'' \
f'' WHERE sala = "{Descricao.get()}"''
print(comando)
cursor.execute(comando)
conexao.commit() ## <<<< editar o banco de dados
novaReservaMsgmLabel.configure(text=f''Dados atualizados com sucesso: '' \
f''\n\nAssento: {assento.get()}'' \
f''\nValor: R${valor.get()}'' \
f''\nNome: {nome.get()}'' \
f''\nSala: {sala.get()}'' \
f''\nTipo: '' \
f''\n\n=======Adcionado======='' \
f''\nData:'' \
f''\nHora:'' \
f''\n======================='')
return 0
case "Assento": #Assento
fazTipo()
fazData()
comando = f''UPDATE assento SET'' \
f'' assento = "{assento.get()}",'' \
f'' WHERE assento = "{Descricao.get()}"''
cursor.execute(comando)
conexao.commit() ## <<<< editar o banco de dados
novaReservaMsgmLabel.configure(text=f''Dados atualizados com sucesso: '' \
f''\n\nAssento: {assento.get()}'' \
f''\nValor: R${valor.get()}'' \
f''\nNome: {nome.get()}'' \
f''\nSala: {sala.get()}'' \
f''\nTipo: '' \
f''\n\n=======Adcionado======='' \
f''\nData:'' \
f''\nHora:'' \
f''\n======================='')
return 0
case _:
novaReservaMsgmLabel.configure(text=f''Opção : --> {Descricao.get()} <--\nnão é válida.\nPor favor confira a escolha \ne \ntente novamente.'')
return 0Segue o Banco de Dados (MySQL):
-- MySQL Script generated by MySQL Workbench
-- Mon Mar 20 15:10:46 2023
-- Model: New Model Version: 1.0
-- 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`.`assento`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`assento` (
`assento` VARCHAR(45) NOT NULL,
PRIMARY KEY (`assento`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`sala`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`sala` (
`sala` INT NOT NULL,
`assento_assento` VARCHAR(45) NOT NULL,
PRIMARY KEY (`sala`),
INDEX `fk_sala_assento1_idx` (`assento_assento` ASC) VISIBLE,
CONSTRAINT `fk_sala_assento1`
FOREIGN KEY (`assento_assento`)
REFERENCES `mydb`.`assento` (`assento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`ingresso`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`ingresso` (
`cod` INT NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(45) NOT NULL,
`valor` DECIMAL(5,0) NULL,
`tipo_entrada` VARCHAR(45) NULL,
`data` DATE NULL,
`hora` TIME NULL,
`sala_sala` INT NOT NULL,
`assento_assento` VARCHAR(45) NOT NULL,
PRIMARY KEY (`cod`, `sala_sala`, `assento_assento`),
INDEX `fk_ingresso_sala1_idx` (`sala_sala` ASC) VISIBLE,
INDEX `fk_ingresso_assento1_idx` (`assento_assento` ASC) VISIBLE,
CONSTRAINT `fk_ingresso_sala1`
FOREIGN KEY (`sala_sala`)
REFERENCES `mydb`.`sala` (`sala`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_ingresso_assentoFelipe
Curtir tópico
+ 0Posts
20/03/2023
Felipe
FOREIGN KEY (`assento_assento`)
REFERENCES `mydb`.`assento` (`assento`)
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;Gostei + 0
20/03/2023
Arthur Heinrich
Uma sala pode conter vários assentos. Logo, é o assento que faz referência à sala e não o contrário.
Pense sempre na relação "1 para n". O "1" é representado pela tabela que possui a PK, que garante a unicidade.
O "n" indica que, para uma mesma chave, neste caso, a PK da sala, pode aparecer em múltiplos registros de assento que compõe a sala.
No seu modelo, invertido. A sala faz referência a um único assento. Para cadastrar a sala, o assento precisa ser criado com antecedência, o que não faz sentido.
Gostei + 0
20/03/2023
Felipe
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)