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 :

Problème de base de donnée pour mon projet JEE !


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Finlande

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 7
    Points
    7
    Par défaut Problème de base de donnée pour mon projet JEE !
    Bonjour tous le monde,

    J'ai créé ma base de donnée pour mon projet web mais celle ci me retourne quelque erreurs que je ne comprend pas.

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    -- base de donnée : 'livreokaz'
    --
    SET FOREIGN_KEY_CHECKS =0;
    -- DROP DATABASE livreokaz;
    CREATE DATABASE IF NOT EXISTS livrokaz DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    USE livrokaz;
     
    -- -----------------------------------------------------------------------------------------
     
    --
    -- structure de la table : 'client'
    --
    DROP TABLE IF EXISTS CLIENT;
    CREATE TABLE CLIENT (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	nom varchar(30) NOT NULL,
    	prenom varchar(30) NOT NULL,
    	adresse varchar(200) NOT NULL,
    	mail varchar(30) NOT NULL,
    	password varchar(50) NOT NULL,
    	profil int NOT NULL,
    	KEY idx_profil (profil)
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'auteur'
    --
    DROP TABLE IF EXISTS AUTEUR;
    CREATE TABLE AUTEUR (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	nom varchar(60) NOT NULL,
    	prenom varchar(60) NOT NULL
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'editeur'
    --
    DROP TABLE IF EXISTS EDITEUR;
    CREATE TABLE EDITEUR (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	libelle varchar(60) NOT NULL
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : format_livre
    --
    DROP TABLE IF EXISTS FORMAT_LIVRE;
    CREATE TABLE FORMAT_LIVRE (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	libelle VARCHAR(50) NOT NULl
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'genre'
    -- 
    DROP TABLE IF EXISTS GENRE;
    CREATE TABLE GENRE (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	libelle varchar(200) NOT NULL
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'commande'
    --
    DROP TABLE IF EXISTS COMMANDE;
    CREATE TABLE COMMANDE (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	date_commande date NOT NULL,
    	total_commande double NOT NULL,
    	client INT NOT NULL,
    	ligne_de_commande INT NOT NULL,
    	KEY idx_client (client),
    	KEY idx_ligne_de_commande (ligne_de_commande)
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'profil'
    --
    DROP TABLE IF EXISTS PROFIL;
    CREATE TABLE PROFIL (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	libelle varchar(100) NOT NULl
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'ligne de commande'
    --
    DROP TABLE IF EXISTS LIGNE_DE_COMMANDE;
    CREATE TABLE LIGNE_DE_COMMANDE (
    	livre INT NOT NULL,
    	commande INT NOT NULL,
    	quantite INT NOT NULL,
    	PRIMARY KEY idx_livre_commande (livre, commande)
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'ecrivain'
    --
    DROP TABLE IF EXISTS ECRIVAIN;
    CREATE TABLE ECRIVAIN (
    	auteur INT NOT NULL,
    	livre INT NOT NULL,
    	PRIMARY KEY idx_auteur_livre (auteur, livre)
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'livre'
    --
    DROP TABLE IF EXISTS LIVRE;
    CREATE TABLE LIVRE (
    	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    	titre VARCHAR(150) NOT NULL,
    	isbn varchar(20) NOT NULL,  
    	image VARCHAR(200) NOT NULL,
    	sujet_livre VARCHAR(100) NOT NULL,
    	description text NOT NULL,
    	annee_parution 	YEAR NOT NULL,
    	prix_neuf DOUBLE NOT NULL,
    	prix_occasion_physique DOUBLE NOT NULL,
    	prix_numerique DOUBLE NOT NULL,
    	quantite INT NOT NULL,
    	langue VARCHAR(25),
    	telechargement BOOLEAN,
    	editeur INT NOT NULL,
    	ecrivain INT NOT NULL,
    	genre INT NOT NULL,
    	KEY idx_editeur (editeur),
    	KEY idx_ecrivain (ecrivain),
    	KEY idx_genre (genre)
    )ENGINE=InnoDB;
     
    --
    -- structure de la table : 'support'
    --
    DROP TABLE IF EXISTS SUPPORT;
    CREATE TABLE SUPPORT (
    	livre INT NOT NULL,
    	format_livre INT NOT NULL,
    	PRIMARY KEY idx_livre_format (livre, format_livre)
    )ENGINE=InnoDB;
     
    --
    -- relation entre les tables 
    --
    ALTER TABLE CLIENT ADD CONSTRAINT fk_profil FOREIGN KEY (profil) REFERENCES profil (id);
     
    ALTER TABLE COMMANDE ADD CONSTRAINT fk_client FOREIGN KEY (client) REFERENCES client (id);
     
    ALTER TABLE LIGNE_DE_COMMANDE ADD CONSTRAINT fk_livre FOREIGN KEY (livre) REFERENCES livre (id);
    ALTER TABLE LIGNE_DE_COMMANDE ADD CONSTRAINT fk_commande FOREIGN KEY (commande) REFERENCES commande (id);
     
    ALTER TABLE ECRIVAIN ADD CONSTRAINT fk_auteur FOREIGN KEY (auteur) REFERENCES auteur (id);
    ALTER TABLE ECRIVAIN ADD CONSTRAINT fk_livre FOREIGN KEY (livre) REFERENCES livre (id);
     
    ALTER TABLE LIVRE ADD CONSTRAINT fk_editeur FOREIGN KEY (editeur) REFERENCES editeur (id);
    ALTER TABLE LIVRE ADD CONSTRAINT fk_genre FOREIGN KEY (genre) REFERENCES genre (id);
     
    ALTER TABLE SUPPORT ADD CONSTRAINT fk_livre FOREIGN KEY (livre) REFERENCES livre (id);
    ALTER TABLE SUPPORT ADD CONSTRAINT fk_format FOREIGN KEY (format_livre) REFERENCES format_livre (id);
     
    SET FOREIGN_KEY_CHECKS	 =1;
    Lors de l'exécution la console MYSQL me dit que les contrainte pour la table support et la table écrivain ne peuvent pas être créer.

    Si quelqu’un peut me donner un coup de main ce serait cool.
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Quel est le message d'erreur exact ?
    Il y a de fortes chances qu'il refuse de créer des contraintes qui portent un nom déjà utilisé
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut LaChaineDuMétalleux.

    Il y a plusieurs choses qui ne vont pas du tout.

    1) le type "DOUBLE" c'est en général utilisé pour des calculs scientifiques.
    Vous risquez d'avoir des problèmes d'arrondis.
    Or vous l'utilisez pour des prix, comme par exemple la colonne "prix_neuf".
    Le bon type est de mettre "decimal (15,2)".

    2) vous devez respecter l'ordre dans la création de vos tables.
    La table père doit être créé avant la table fils !
    Exemple : créer table "profil" avant table "client", puisque vous utilisez une clef étrangère qui va de "client" vers "profil".

    3) inutile d'externaliser vos clef étrangère. Mettez les dans la déclaration de la table.

    4) quand vous ne savez pas quoi mettre comme nom de contrainte, mettez par exemple : "fk_client_profil".
    Ce qui signifie "fk" pour foreign key, puis le nom de la table, et enfin le nom de la colonne.
    Il vous sera plus facile d'identifier votre index (oui, une foreign key, c'est aussi un index).

    5) ne faite pas des déclaratives par défaut. Précisez toujours le "ON DELETE RESTRICT ON UPDATE CASCADE".

    6) j'ai modifié le charset et le collation pour la base et les tables. J'ai aussi ajout la compression des données.

    7) un varchar, c'est comme le nom l'indique une chaine de caractères dont la longueur est variable. Pourquoi ne pas mettre le maximum partout "255" ?
    Cela ne change rien à l'espace occupé et cela vous évite d'avoir un problème de limite sur votre colonne.

    8) pour l'auto incrément, le format est "integer unsigned". L'incrémentation commence à 1.

    9) si vous avez une clef étrangère sur une colonne, il est inutile de mettre aussi un index sur la même colonne. Cela faut double emploi.

    10) votre anomalie provient que vous avez mis les mêmes noms de contrainte sur plusieurs clef étrangère.
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    drop database if exists `livrokaz`
    --------------
     
    --------------
    CREATE DATABASE `livrokaz`
      DEFAULT CHARACTER SET `utf8`
      DEFAULT COLLATE       `utf8_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS PROFIL
    --------------
     
    --------------
    CREATE TABLE PROFIL (
      id      INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
      libelle varchar(100) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS CLIENT
    --------------
     
    --------------
    CREATE TABLE CLIENT (
      id       INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
      nom      varchar(30)  NOT NULL,
      prenom   varchar(30)  NOT NULL,
      adresse  varchar(200) NOT NULL,
      mail     varchar(30)  NOT NULL,
      password varchar(50)  NOT NULL,
      profil   int          NOT NULL,
      CONSTRAINT fk_client_profil FOREIGN KEY (profil) REFERENCES profil (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS AUTEUR
    --------------
     
    --------------
    CREATE TABLE AUTEUR (
      id     INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
      nom    varchar(60) NOT NULL,
      prenom varchar(60) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS EDITEUR
    --------------
     
    --------------
    CREATE TABLE EDITEUR (
      id      INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
      libelle varchar(60) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS FORMAT_LIVRE
    --------------
     
    --------------
    CREATE TABLE FORMAT_LIVRE (
      id      INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
      libelle VARCHAR(50) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS GENRE
    --------------
     
    --------------
    CREATE TABLE GENRE (
      id      INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
      libelle varchar(200) NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS COMMANDE
    --------------
     
    --------------
    CREATE TABLE COMMANDE (
      id                INT    NOT NULL AUTO_INCREMENT PRIMARY KEY,
      date_commande     date   NOT NULL,
      total_commande    double NOT NULL,
      client            INT    NOT NULL,
      ligne_de_commande INT    NOT NULL,
      KEY idx_commande_ligne_de_commande (ligne_de_commande),
      CONSTRAINT fk_commande_client FOREIGN KEY (client) REFERENCES client (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS LIVRE
    --------------
     
    --------------
    CREATE TABLE LIVRE (
      id                     INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
      titre                  VARCHAR(150) NOT NULL,
      isbn                   varchar(20)  NOT NULL,
      image                  VARCHAR(200) NOT NULL,
      sujet_livre            VARCHAR(100) NOT NULL,
      description            text         NOT NULL,
      annee_parution         YEAR         NOT NULL,
      prix_neuf              DOUBLE       NOT NULL,
      prix_occasion_physique DOUBLE       NOT NULL,
      prix_numerique         DOUBLE       NOT NULL,
      quantite               INT          NOT NULL,
      langue                 VARCHAR(25),
      telechargement         BOOLEAN,
      editeur                INT          NOT NULL,
      ecrivain               INT          NOT NULL,
      genre                  INT          NOT NULL,
      KEY idx_livre_ecrivain (ecrivain),
      CONSTRAINT fk_livre_editeur FOREIGN KEY (editeur) REFERENCES editeur (id) ON DELETE RESTRICT ON UPDATE CASCADE,
      CONSTRAINT fk_livre_genre   FOREIGN KEY (genre)   REFERENCES genre   (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS LIGNE_DE_COMMANDE
    --------------
     
    --------------
    CREATE TABLE LIGNE_DE_COMMANDE (
      livre     INT NOT NULL,
      commande  INT NOT NULL,
      quantite  INT NOT NULL,
      PRIMARY KEY idx_livre_commande (livre, commande),
      CONSTRAINT fk_ligne_de_commande_livre    FOREIGN KEY (livre)    REFERENCES livre    (id) ON DELETE RESTRICT ON UPDATE CASCADE,
      CONSTRAINT fk_ligne_de_commande_commande FOREIGN KEY (commande) REFERENCES commande (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS ECRIVAIN
    --------------
     
    --------------
    CREATE TABLE ECRIVAIN (
      auteur INT NOT NULL,
      livre  INT NOT NULL,
      PRIMARY KEY idx_auteur_livre (auteur, livre),
      CONSTRAINT fk_ecrivain_auteur FOREIGN KEY (auteur) REFERENCES auteur (id) ON DELETE RESTRICT ON UPDATE CASCADE,
      CONSTRAINT fk_ecrivain_livre  FOREIGN KEY (livre)  REFERENCES livre  (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    DROP TABLE IF EXISTS SUPPORT
    --------------
     
    --------------
    CREATE TABLE SUPPORT (
      livre        INT NOT NULL,
      format_livre INT NOT NULL,
      PRIMARY KEY idx_livre_format (livre, format_livre),
      CONSTRAINT fk_support_livre  FOREIGN KEY (livre)        REFERENCES livre        (id) ON DELETE RESTRICT ON UPDATE CASCADE,
      CONSTRAINT fk_support_format FOREIGN KEY (format_livre) REFERENCES format_livre (id) ON DELETE RESTRICT ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Quelle base de données pour mon app Android
    Par Emy1992 dans le forum Android
    Réponses: 1
    Dernier message: 15/07/2013, 01h45
  2. Mise à jour base de données pour 2 projets vba
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2012, 17h28
  3. Quelle structure de données pour mon projet ?
    Par stallaf dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2010, 17h12
  4. Quelle base de données pour mon application ?
    Par dim07 dans le forum Bases de données
    Réponses: 16
    Dernier message: 14/10/2009, 13h38

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