Pedro Paiva Posted February 25, 2021 at 09:53 AM Report Share #621467 Posted February 25, 2021 at 09:53 AM Olá eu estou a tentar criar uma base de dados com uma ligação simples mas não sei o motivo de a ligação não estar a funcionar CREATE TABLE fatura( id_fatura INT NOT NULL AUTO_INCREMENT, nome_empresa CHAR(50), NIB_empresa CHAR(24), data DATE, nome_cliente CHAR(100), contribuinte int(9), email CHAR(100), precofinal FLOAT, precosemiva FLOAT, precodoiva FLOAT, troco FLOAT, mesa INT, PRIMARY KEY (id_fatura)); CREATE TABLE mesas( mesa INT, quantidade INT, descricao CHAR(100), preco FLOAT, IVA CHAR(3)); -- FOREIGN KEY (mesa) REFERENCES fatura (mesa)); Estas são as tabelas que tenho e na tabela mesa está comentada a ligação que quero fazer, mas por algum motivo não funciona, desde já gradeço a ajuda. Link to comment Share on other sites More sharing options...
M6 Posted February 25, 2021 at 11:28 AM Report Share #621474 Posted February 25, 2021 at 11:28 AM O teu modelo está ao contrário, é a tua fatura que tem de ter uma chave estrangeira para a mesa e não o contrário. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Pedro Paiva Posted February 25, 2021 at 12:47 PM Author Report Share #621476 Posted February 25, 2021 at 12:47 PM Ok vou tentar dessa maneira, obrigado por agora Link to comment Share on other sites More sharing options...
Pedro Paiva Posted February 25, 2021 at 12:51 PM Author Report Share #621477 Posted February 25, 2021 at 12:51 PM 1 hora atrás, M6 disse: O teu modelo está ao contrário, é a tua fatura que tem de ter uma chave estrangeira para a mesa e não o contrário. Ok isso funcionou, vou deixar a solução na citação da sua resposta, muito obrigado CREATE TABLE mesas( mesa INT, quantidade INT, descricao CHAR(100), preco FLOAT, IVA CHAR(3), PRIMARY KEY (mesa)); CREATE TABLE fatura( id_fatura INT NOT NULL AUTO_INCREMENT, nome_empresa CHAR(50), NIB_empresa CHAR(24), data DATE, nome_cliente CHAR(100), contribuinte int(9), email CHAR(100), precofinal FLOAT, precosemiva FLOAT, precodoiva FLOAT, troco FLOAT, mesa INT, PRIMARY KEY (id_fatura), FOREIGN KEY (mesa) REFERENCES mesas (mesa)); Link to comment Share on other sites More sharing options...
M6 Posted February 25, 2021 at 02:13 PM Report Share #621479 Posted February 25, 2021 at 02:13 PM Antes de criares as tabelas devias ter um desenho lógico do sistema, isso permite, de entre outras coisas, compreender as relações e evitar situações dessas. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Pedro Paiva Posted February 25, 2021 at 02:34 PM Author Report Share #621481 Posted February 25, 2021 at 02:34 PM 19 minutos atrás, M6 disse: Antes de criares as tabelas devias ter um desenho lógico do sistema, isso permite, de entre outras coisas, compreender as relações e evitar situações dessas. Mas porque razão não funciona a tal ligação que tentei fazer Eu normalmente faço uma normalização primeiro, mas este foi um caso em excessão Link to comment Share on other sites More sharing options...
M6 Posted February 27, 2021 at 05:08 PM Report Share #621505 Posted February 27, 2021 at 05:08 PM Basicamente a tua relação estava mal definida. Lê o tema de capa da 5ª edição da da nossa revista para perceberes melhor: https://www.revista-programar.info/static/downloads/download.php?t=site&e=5 De tiveres mais dúvidas, diz. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Pedro Paiva Posted February 28, 2021 at 09:52 PM Author Report Share #621514 Posted February 28, 2021 at 09:52 PM Ok agora tenho um problema, para fazer aquilo que tenho no meu caso tive que por o campo mesa como primário, só que eu tenho esta base de dados ligada a um programa em C# e a partir desse programa eu adiciono vários objetos com a mesma chave e assim não funciona Eu consigo fazer a ligação sem ter algum campo como primário? Link to comment Share on other sites More sharing options...
Cerzedelo Posted March 1, 2021 at 08:39 AM Report Share #621517 Posted March 1, 2021 at 08:39 AM 10 horas atrás, Pedro Paiva disse: Ok agora tenho um problema, para fazer aquilo que tenho no meu caso tive que por o campo mesa como primário, só que eu tenho esta base de dados ligada a um programa em C# e a partir desse programa eu adiciono vários objetos com a mesma chave e assim não funciona Eu consigo fazer a ligação sem ter algum campo como primário? Sim consegue fazer a ligação sem ter nenhum campo com chave primária. Quando diz que adiciona objectos com a mesma chave e não funciona, significa que os mesmos não aparecem na base de dados ou surge algum erro? Agora se na tabela mesa for inserir com o mesmo número mais do que uma mesa vai dar erro, porque este campo tem o chave primária, o que faz sentido cada mesa terá um só número ou referência. Na tabela factura ao inserir dados no campo mesa faz sentido que seja criada uma condição para que esse valor já esteja previamente definido na tabela mesa Link to comment Share on other sites More sharing options...
Pedro Paiva Posted March 1, 2021 at 09:46 AM Author Report Share #621519 Posted March 1, 2021 at 09:46 AM Eu tenho uma espécie nfe caixa registadora e quero adicionar vários produtos por mesa, mas se fizer a ligação com a chave primária não funciona, como e que posso fazer a ligação sem ter a mesa como chave primária Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now