MIMP Posted May 31, 2009 at 12:21 PM Report #268717 Posted May 31, 2009 at 12:21 PM boas.... estou a resolver uns exercicios das aulas...mas estou a ter dificuldade em criar a base de dados, pois dá-me erro ao meter a correr no mysql... drop database if exists video_clube_xpto; create database video_clube_xpto; use video_clube_xpto; create table modalidade ( cod_modalidade integer not null, preco char(10), multa char(10), designacao char(20), primary key (cod_modalidade)); create table aluguer( multa char(5), num_aluguer integer not null, preco char(6), data_aluguer date, data_entrega date, cod_modalidade integer not null, num_socio integer not null, cod_filme integer not null, num_exemplar integer not null, primary key (num_aluguer), FOREIGN KEY (cod_modalidade) REFERENCES modalidade (cod_modalidade) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (num_socio) REFERENCES socio (num_socio) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (cod_filme) REFERENCES filme (cod_filme) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (num_exemplar) REFERENCES exemplar (num_exemplar) ON UPDATE CASCADE ON DELETE CASCADE); create table exemplar( num_exemplar integer not null, preco char(6), data_aquisicao date, formato char(5), cod_filme integer not null, primary key (num_exemplar,cod_filme), FOREIGN KEY (cod_filme) REFERENCES filme (cod_filme) ON UPDATE CASCADE ON DELETE CASCADE); create table filme( cod_filme integer not null, duracao char(10), titulo char(10), primary key (cod_filme)); create table socio( num_socio integer not null, nome char(20), morada char(20), telefone integer, bi integer, data_nasc date, data_insc date, primary key (num_socio)); espero k me possam ajudar.... obrg
bruno1234 Posted May 31, 2009 at 01:01 PM Report #268724 Posted May 31, 2009 at 01:01 PM Qual é o erro? Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
MIMP Posted May 31, 2009 at 01:27 PM Author Report #268736 Posted May 31, 2009 at 01:27 PM o erro k me dá é este: "error 1005 (HY000): Can't create table 'video_clube_xpto.aluguer' (errno:150)" este erro aparece tambem para a tabela exemplar
Baderous Posted May 31, 2009 at 02:09 PM Report #268747 Posted May 31, 2009 at 02:09 PM Se o MySQL retornar o erro de número 1005 de uma instrução CREATE TABLE, e a string de mensagem de erro se referir ao errno 150, então a criação da tabela falhou porque um restrição de chaves estrangeiras não foi formada corretamente http://dev.mysql.com/doc/refman/4.1/pt/innodb-foreign-key-constraints.html Penso que é porque estás a referenciar tabelas que ainda não foram criadas, aquando da definição das chaves estrangeiras na tabela "aluguer".
M6 Posted June 1, 2009 at 02:04 PM Report #268954 Posted June 1, 2009 at 02:04 PM As tabelas têm uma ordem de criação, tens de colocar as que vão ser referenciadas antes das que as referenciam. 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."
MIMP Posted June 10, 2009 at 08:19 AM Author Report #271217 Posted June 10, 2009 at 08:19 AM As tabelas ja funcionam sem nenhum erro (Obrigados...) DROP DATABASE IF EXISTS fichaF; CREATE DATABASE fichaF; USE fichaF; CREATE TABLE socios ( n_socio INTEGER(5) NOT NULL, nome CHAR(30) NOT NULL, morada VARCHAR(30), telefone INTEGER (9), bi INTEGER (9), data_nasc DATE, data_insc DATE NOT NULL, CONSTRAINT ch_candidata_socios UNIQUE (nome,bi), CONSTRAINT ch_prim_n_socio PRIMARY KEY (n_socio) ); CREATE TABLE filmes ( cod_filme INTEGER(5) NOT NULL, titulo CHAR(30) NOT NULL, duracao TIME, CONSTRAINT ch_candidata_filmes UNIQUE (titulo), CONSTRAINT ch_prim_cod_filme PRIMARY KEY (cod_filme) ); CREATE TABLE modalidades ( modalidade CHAR(10) NOT NULL, preco DECIMAL(5,2) NOT NULL, multa_diaria DECIMAL(5,2) NOT NULL, CHECK (preco >=0), CHECK (multa_diaria >=0), CONSTRAINT ch_prim_modalidade PRIMARY KEY (modalidade) ); CREATE TABLE copias ( cod_filme INTEGER(5) NOT NULL, n_copia INTEGER(5) NOT NULL, formato CHAR(3)NOT NULL, data_aquisicao DATE, preco DECIMAL(5,2) NOT NULL, CHECK (formato= 'VHS' AND formato='DVD'), CHECK (preco>=0), CONSTRAINT ch_prim_cod_filme_e_n_copia PRIMARY KEY (cod_filme,n_copia) ); CREATE TABLE alugueres ( n_aluguer INTEGER(5) NOT NULL, n_socio INTEGER(5) NOT NULL, cod_filme INTEGER(5) NOT NULL, n_copia INTEGER(5) NOT NULL, modalidade CHAR(10) NOT NULL, data_aluguer DATE, data_entrega DATE, preco DECIMAL(5,2) NOT NULL, multa DECIMAL (5,2), CHECK (multa >=0 OR NULL), CHECK (preco >=0), CONSTRAINT ch_prim_n_aluguer PRIMARY KEY (n_aluguer), CONSTRAINT ch_estr_n_socio FOREIGN KEY (n_socio) REFERENCES socios (n_socio) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT ch_estr_cod_filme FOREIGN KEY (cod_filme,n_copia) REFERENCES copias (cod_filme,n_copia) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT ch_estr_modalidade FOREIGN KEY (modalidade) REFERENCES modalidades (modalidade) ON UPDATE CASCADE ON DELETE CASCADE ); Agora queria k me ajudassem no seguinte: tenho k definir uma query em k para cada filme (cod_filme,titulo) tenho de listar o numero de cassetes existentes no clube. so consego definir a query apenas a contar os filmes com copias em cassetess ('VHS'). Nao consigo colocar a 0 (zero) os 'DVD'. select f.cod_filme,titulo,count(*) from filmes f, copias c where formato='VHS' and f.cod_filme=c.cod_filme group by cod_filme; Obrigado...
Betovsky Posted June 12, 2009 at 11:43 PM Report #271826 Posted June 12, 2009 at 11:43 PM Não percebi. Queres algo tipo SELECT f.cod_filme,titulo,count(*), 0 FROM filmes f, copias c WHERE formato='VHS' AND f.cod_filme=c.cod_filme GROUP BY cod_filme; "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk
falco Posted June 18, 2009 at 10:37 AM Report #273295 Posted June 18, 2009 at 10:37 AM Já agora lembra-te que por omissão o MySQL cria tabelas MyISAM... As tabelas MyISAM, não suportam chaves estrangeiras... Se queres utilizar chaves estrangeiras sugiro que uses tabelas InnoDB.
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