Fórum Dúvida sobre Banco de Dados #619678
20/03/2023
0
Segue o Código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | 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 0 |
Segue o Banco de Dados (MySQL):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | -- 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_assento |

Felipe
Curtir tópico
+ 0Posts
20/03/2023
Felipe
1 2 3 4 5 6 7 8 9 10 | 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 :)