Bonsoir!
Je suis débutant en SGDB et je fais maintenant ma première BDD. J'ai une petite doute sur CONSTRAINT lorsque on construit une table dans PRIMARY KEY et aussi dans FOREIGN KEY.
Merci.
Version imprimable
Bonsoir!
Je suis débutant en SGDB et je fais maintenant ma première BDD. J'ai une petite doute sur CONSTRAINT lorsque on construit une table dans PRIMARY KEY et aussi dans FOREIGN KEY.
Merci.
Je ne vais pas épiloguer sur ce que d'autres ont dit mieux que moi XD
Alors voici un lien >> ici <<
En espérant qu'il t'aidera.
Merci Mikanou!
J'ai crée les tables suivantes:Mais je ne peut construire les deux dernières en MySQL 5, il me donne un erreur...Code:
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 Construção da Base de Dados Comandos SQL Criação da tabela cantores: CREATE TABLE cantores (codCantor integer NOT NULL UNIQUE, nomeCa varchar(25) NOT NULL, PRIMARY KEY (codCantor)); Criação da tabela discos: CREATE TABLE discos (codDisco varchar(14) NOT NULL UNIQUE, tituloDisco varchar(25) NOT NULL, dataLancamento varchar(7) NOT NULL, editora varchar(15) NOT NULL, nCds integer NOT NULL, preco real NOT NULL, stock integer NOT NULL, PRIMARY KEY (codDisco)); Criação da tabela musicas: CREATE TABLE musicas (codDisco varchar(14) NOT NULL UNIQUE, nMusica integer NOT NULL, tituloMusica varchar(50) NOT NULL, CONSTRAINT pk_musicas PRIMARY KEY (codDisco, nMusica), CONSTRAINT fk_codDisco FOREIGN KEY (codDisco) REFERENCES discos (codDisco)); Criação da tabela encomendas: CREATE TABLE encomendas (codEncomenda varchar(10) NOT NULL UNIQUE, dataEnc varchar(10) NOT NULL, contribuinte integer NOT NULL, PRIMARY KEY (codEncomenda)); Criação da tabela fornecedores: CREATE TABLE fornecedores (contribuinte integer NOT NULL UNIQUE, nomeFor varchar(30) NOT NULL, moradaFor varchar(35) NOT NULL, telefoneFor varchar(9) NOT NULL, prazo varchar(10) NOT NULL, PRIMARY KEY (contribuinte)); Criação da tabela clientes: CREATE TABLE clientes (bi varchar(10) NOT NULL UNIQUE, nomeCl varchar(25) NOT NULL, moradaCl varchar(35), telefoneCl varchar(9), emailCl varchar(35), PRIMARY KEY (bi)); Criação da tabela interesses: CREATE TABLE interesses (codInt varchar(10) NOT NULL UNIQUE, nomeCa varchar(25), tituloMusica varchar(50), tituloDisco varchar(25), bi varchar(10), PRIMARY KEY (codInt)); Criação da tabela item: CREATE TABLE item (codDisco varchar(14) NOT NULL, codEncomenda varchar(10) NOT NULL, unidadesItem integer NOT NULL, CONSTRAINT pk_item PRIMARY KEY (codDisco, codEncomenda), CONSTRAINT fk_codDisco FOREIGN KEY (codDisco) REFERENCES discos (codDisco), CONSTRAINT fk_codEncomenda FOREIGN KEY (codEncomenda) REFERENCES encomenda (codEncomenda)); Criação da tabela compram: CREATE TABLE compram (codDisco varchar(14) NOT NULL, bi varchar(10) NOT NULL, dataComp varchar(10) NOT NULL, unidadesComp integer NOT NULL, CONSTRAINT pk_compram PRIMARY KEY (codDisco, bi), CONSTRAINT fk_codDisco FOREIGN KEY (codDisco) REFERENCES discos (codDisco), CONSTRAINT fk_bi FOREIGN KEY (bi) REFERENCES clientes (bi));
A savoir: dans le table item l'erreur 150 et dans compram l'erreur 121.
Quelqu'un sait pourquoi il me donne ces erreurs lorsque de la création des tables?
Merci d'avance.
Oui: tu utilises le nom "fk_codDisco" dans les tables "musicas", "item"et "compram", donc ça ne peut pas marcher.
Tu devrait changer tes conventions de nommage pour les contraintes de clef:
- clefs primaires: pk_table (comme tu fais actuellement)
- clefs étrangères: fk_table_champClef
Aussi, dans la table "item", tu as oublié un "s" à "encomendas" dans :
Code:REFERENCES encomendas(codEncomenda)
Merci :wink: