IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Doute sur Constraint


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Paulinho
    Invité(e)
    Par défaut Doute sur Constraint
    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.

  2. #2
    Membre éclairé Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Par défaut
    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.

  3. #3
    Paulinho
    Invité(e)
    Par défaut
    Merci Mikanou!

    J'ai crée les tables suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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));
    Mais je ne peut construire les deux dernières en MySQL 5, il me donne un erreur...

    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.

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    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
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Aussi, dans la table "item", tu as oublié un "s" à "encomendas" dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REFERENCES encomendas(codEncomenda)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Paulinho
    Invité(e)
    Par défaut
    Merci

Discussions similaires

  1. Doute sur le booléen SQLServer
    Par mael94420 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/08/2006, 16h17
  2. Doc sur Constraint
    Par hdunoyer dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/08/2006, 13h30
  3. doute sur requete SQL
    Par gwendk dans le forum ASP
    Réponses: 19
    Dernier message: 31/05/2006, 17h15
  4. Petite doute sur static...
    Par Paulinho dans le forum C++
    Réponses: 2
    Dernier message: 26/01/2006, 11h06
  5. [Débutant] Doute sur Constraint
    Par Paulinho dans le forum Débuter
    Réponses: 3
    Dernier message: 14/12/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo