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 :

Type de données et FK


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut Type de données et FK
    Bonjour.
    Je construit une BDD avec Mysql / InnoDB
    et j'ai 2 questions :
    J'ai des chaines de caractères qui iront jusqu'à 1000 caractères et devront être sensibles à la casse, quel type de données ?
    Dans une table j'ai une colonne qui une clé étrangère, je souhaite que cette colonne contiennent soit l'id de la clé primaire associée dans une autre table soit une valeur par défaut de type -1, est ce possible ?merci de votre aide.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 196
    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 : 7 196
    Par défaut
    Salut 69Pierre.

    Citation Envoyé par 69Pierre
    J'ai des chaines de caractères qui iront jusqu'à 1000 caractères et devront être sensibles à la casse, quel type de données ?
    Pour le type de données, vous pouvez utiliser le type "varchar(65535)" ou encore "text" qui lui est synonyme.

    J'utilise le français et l'anglais, je n'ai besoin que du Windows-1252 ou ce qui s'en rapproche le plus.
    Vous pouvez utiliser dans votre base, le "latin1" pour le charset et "latin1_general_ci" pour la collation.

    Citation Envoyé par 69Pierre
    Dans une table j'ai une colonne qui est une clé étrangère, je souhaite que cette colonne contienne soit l'id de la clé primaire associée dans une autre table soit une valeur par défaut de type -1, est ce possible ?
    La valeur de cette clef étrangère doit être présente dans la table parente. Si vous mettez "-1", cette valeur doit exister au préalable dans votre table parente.
    Sinon pourquoi ne pas utiliser "NULL" pour signifier qu'elle la même chose que "-1" ?

    Si vous utilisez le "NULL", cette clef étrangère ne pourra pas servir comme clef primaire dans la table où elle est déclarée.
    Mais comme je suppose qu'elle sert juste de référence à la table parente, cela ne pose aucun problème d'utiliser le "NULL".

    @+

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Merci pour ces réponses.
    Je n'ai pas bien compris les impact d'une valeur NULL dans une colonne où il est prévu une clé étrangère. Je rechigne à utiliser le NULL car je m'en méfie.
    Bonne journée.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Du coup, ça s'écrit comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `table` (
    ...
    `maColonne` int(11) DEFAULT NULL,
    ...
    KEY `id_reference_idx` (`maColonne`),
    CONSTRAINT `maColonne_ibfk_1` FOREIGN KEY (`maColonne`) REFERENCES `tableContenantLaReference` (`id_reference`) ON DELETE NO ACTION ON UPDATE CASCADE
    ...
    )
    Je viens de m'apercevoir d'un petit problème de l'encodage : DEFAULT CHARACTER SET latin1 et DEFAULT CHARSET=utf8, c'est nomal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE DATABASE `database` /*!40100 DEFAULT CHARACTER SET latin1 */;
     
    DROP TABLE IF EXISTS `table`;
    CREATE TABLE `table` (
    ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 196
    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 : 7 196
    Par défaut
    Salut 69Pierre.

    Citation Envoyé par "69Pierre
    Je n'ai pas bien compris les impact d'une valeur NULL dans une colonne où il est prévu une clé étrangère.
    La clef étrangère peut s'utiliser de deux manières :
    --> soit en tant qu'une simple colonne dans la table et de ce fait, vous pouvez autoriser les NULLs.
    --> soit en tant que colonne d'une clef primaire et donc, les NULLs ne sont pas autorisés.

    L'exemple de la clef étrangère que vous donnez se situe comme une simple colonne, donc cela ne pose aucun problème.
    Vous n'êtes pas obligé de mettre "default null", mais juste "null". La valeur par défaut peut-être autre chose.

    Citation Envoyé par "69Pierre
    Je rechigne à utiliser le NULL car je m'en méfie.
    Le NULL est un marqueur dans la colonne, pour signifier que cette colonne ne contient aucune information.
    Dans une colonne, vous pouvez mettre soit une valeur, ou soit l'initialiser avec une valeur par défaut.
    Mais une valeur par défaut, c'est quand même une valeur, et cette valeur à un sens.
    Si par contre, vous ignorez la valeur au moment de l'initialisation de cette colonne, autant mettre NULL pour dire que vous n'avez mis aucune valeur.
    Considérez que le NULL, c'est juste une façon de dire que vous n'avez pas encore renseignée la colonne avec une valeur.

    Citation Envoyé par "69Pierre
    Je viens de m'apercevoir d'un petit problème de l'encodage : DEFAULT CHARACTER SET latin1 et DEFAULT CHARSET=utf8, c'est nomal ?
    Il y a quatre niveaux de renseignements dans MySql :

    1) au niveau de la colonne.
    2) au niveau de la table.
    3) au niveau de la base de données.
    4) au niveau du SGBDR MySql.

    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
    -- ======================
    -- Base de Données `base`
    -- ======================
     
    DROP DATABASE IF EXISTS `base`;
     
    CREATE DATABASE `base`
    	DEFAULT CHARACTER SET `latin1`
    	DEFAULT COLLATE       `latin1_general_ci`;
     
    USE `base`;
     
    -- ============
    -- Table `test`
    -- ============
     
    DROP TABLE IF EXISTS `test`;
     
    CREATE TABLE `test`
    (
      `id`  integer unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ...
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED;
    Non, ce n'est pas normal. Mais si vous utilisez que le français et l'anglais, autant mettre "latin1". C'est équivalent à l'ISO_8859-1.

    @+

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bonjour et merci Artemus.
    Je vais digérer vos conseils ce week-end.
    J'ai un script SQL qui crée la structure de ma BDD.
    Je n'arrive pas à l'intégrer dans mon projet (pHp-Mysql) ni avec pHpMyAdmin qui ne veut pas faire de DROP DATABASE,
    ni avec Adminer qui me dit qui a l'air de mal comprendre où se trouve les zones commentées.
    Je travaille avec easy php qui me permet de trimbaler ma clé USB de micro en micro sur des OS allant de Windows XP à Windows 10.
    Y a t-il une alternative pour que je puisse simplement jouer le script sql ci-dessous ou mon code est boggué ?
    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
    -- Adminer 4.1.0 MySQL dump
     
    SET NAMES utf8;
    SET time_zone = '+00:00';
     
     
    CREATE DATABASE `touslesport.V2` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `touslesport.V2`;
     
     
    DELIMITER ;
     
    --20173008 : reste clés étrangeres ou -1 
    DROP TABLE IF EXISTS `multisports`;
    CREATE TABLE `multisports` (
       `id_multisports` int(11) NOT NULL AUTO_INCREMENT,
       `nom_multisports` varchar(45) NOT NULL,   
       `parcours_id_parcours1` int(11) DEFAULT NULL,
       `parcours_id_parcours2` int(11) DEFAULT NULL,
       `parcours_id_parcours3` int(11) DEFAULT NULL,
     
       PRIMARY KEY (`id_multisports`),
       CONSTRAINT `parcours_id_parcours1_ibfk` FOREIGN KEY (`parcours_id_parcours1`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours2_ibfk` FOREIGN KEY (`parcours_id_parcours2`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours3_ibfk` FOREIGN KEY (`parcours_id_parcours3`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
     
    DROP TABLE IF EXISTS `parcours`;
    CREATE TABLE `parcours` (
       `id_parcours` int(11) NOT NULL AUTO_INCREMENT,
       `itineraire_parcours` varchar(15) NOT NULL,
       `distance_parcours` decimal(10,0) unsigned DEFAULT NULL,
       `denivelee_parcours` smallint(5) unsigned DEFAULT NULL,
       `intineraire_detaille_parcours` varchar(100) NOT NULL,
       `commentaires_parcours` mediumtext,
       `web_parcours` mediumtext,
       `sport_parcours` varchar(3) NOT NULL,
       `frequent_parcours` tinyint(1) NOT NULL COMMENT '\n',
       PRIMARY KEY (`id_parcours`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `parcours_bis`;
    CREATE TABLE `parcours_bis` (
       `id_parcours_bis` int(11) NOT NULL AUTO_INCREMENT,
       `itineraire_parcours_bis` varchar(15) NOT NULL,
       `distance_parcours_bis` decimal(10,0) unsigned NOT NULL,
       `denivelee_parcours_bis` smallint(3) unsigned NOT NULL,
       `commentaires_parcours_bis` text,
       PRIMARY KEY (`id_parcours_bis`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    --20173008 : reste clés trangeres ou -1 
    DROP TABLE IF EXISTS `sorties`;
    CREATE TABLE `sorties` (
       `id_sorties` int(17) NOT NULL AUTO_INCREMENT,
       `date_sorties` date NOT NULL,
       `HHHtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SStemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `moyenne_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `poids_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `forme_sorties` varchar(45) DEFAULT NULL,
       `commentaire_court_sorties` varchar(100) DEFAULT NULL,  
       `commentaire_long_sorties` text DEFAULT NULL,
       `denivsup_sorties` smallint(5) unsigned DEFAULT NULL,
       `distsup_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `HHsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SSsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `parcours_id_parcours` int(11) DEFAULT NULL,
       `velos_id_velos` int(11) DEFAULT NULL,
       `multisports_id_multisports` int(11) NOT NULL,
       `ordre_sorties` int(11) DEFAULT 1,
       `HHHapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SSapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       PRIMARY KEY (`id_sorties`),
       KEY `id_parcours_idx` (`parcours_id_parcours`),
       KEY `iid_velos_idx` (`velos_id_velos`),
       KEY `id_multisports_idx` (`multisports_id_multisports`),
       CONSTRAINT `sorties_ibfk_1` FOREIGN KEY (`multisports_id_multisports`) REFERENCES `multisports` (`id_multisports`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_ibfk_2` FOREIGN KEY (`parcours_id_parcours`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_ibfk_3` FOREIGN KEY (`velos_id_velos`) REFERENCES `velos` (`id_velos`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `sorties_bis`;
    CREATE TABLE `sorties_bis` (
       `id_sorties_bis` int(13) NOT NULL AUTO_INCREMENT,
       `sorties_id_sorties` int(17) NOT NULL,
       `parcours_bis_id_parcours_bis` int(11) NOT NULL,
       `intineraire_sorties_bis` varchar(15) NOT NULL,
       `HHHtemps_sorties_bis` int(3) NOT NULL,
       `MMtemps_sorties_bis` int(2) NOT NULL,
       `SStemps_sorties_bis` int(2) NOT NULL,
       `moyenne_sorties_bis` decimal(10,0) NOT NULL,
       `commentaire_sorties_bis` mediumtext,
       `passage_sorties_bis` int(1) NOT NULL,
       PRIMARY KEY (`id_sorties_bis`),
       KEY `id_parcours_bis_idx` (`parcours_bis_id_parcours_bis`),
       KEY `id_sorties_idx` (`sorties_id_sorties`),
       CONSTRAINT `sorties_bis_ibfk_1` FOREIGN KEY (`parcours_bis_id_parcours_bis`) REFERENCES `parcours_bis` (`id_parcours_bis`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_bis_ibfk_2` FOREIGN KEY (`sorties_id_sorties`) REFERENCES `sorties` (`id_sorties`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
     
    DROP TABLE IF EXISTS `velos`;
    CREATE TABLE `velos` (
       `id_velos` int(11) NOT NULL AUTO_INCREMENT,
       `nom_velos` varchar(45) NOT NULL,
       `commentaire_velo` text,
       PRIMARY KEY (`id_velos`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    DROP TABLE IF EXISTS `entretien_velos`;
    CREATE TABLE `entretien_velos` (
       `id_entretien_velos` int(11) NOT NULL AUTO_INCREMENT,
       `velos_id_velos` int(11) NOT NULL,
       `reparation_entretien_velos` text,
       `commentaires_entretien_velos` text,
       PRIMARY KEY (`id_entretien_velos`),
       KEY `id_velos_idx` (`velos_id_velos`),
       CONSTRAINT `entretien_velos_ibfk_1` FOREIGN KEY (`velos_id_velos`) REFERENCES `velos` (`id_velos`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    -- 2017-03-08 
    /* EXEMPLECREATE
     
    CREATE TABLE Commande (
        numero INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        client INT UNSIGNED NOT NULL,
        produit VARCHAR(40),
        quantite SMALLINT DEFAULT 1,
        CONSTRAINT fk_client_numero          -- On donne un nom à notre clé
            FOREIGN KEY (client)             -- Colonne sur laquelle on crée la clé
            REFERENCES Client(numero)        -- Colonne de référence
    )
    ENGINE=InnoDB;   */                        -- MyISAM interdit, je le rappelle encore une fois !

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bonjour.

    J'ai remis la cration des tables dans le bon ordre :
    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
    -- Adminer 4.1.0 MySQL dump
     
    SET NAMES utf8;
    SET time_zone = '+00:00';
     
    DROP DATABASE IF EXISTS `touslesport.V2`;
    CREATE DATABASE `touslesport.V2` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `touslesport.V2`;
     
     
    DELIMITER ;
     
     
    DROP TABLE IF EXISTS `parcours`;
    CREATE TABLE `parcours` (
       `id_parcours` int(11) NOT NULL AUTO_INCREMENT,
       `itineraire_parcours` varchar(15) NOT NULL,
       `distance_parcours` decimal(10,0) unsigned DEFAULT NULL,
       `denivelee_parcours` smallint(5) unsigned DEFAULT NULL,
       `intineraire_detaille_parcours` varchar(100) NOT NULL,
       `commentaires_parcours` mediumtext,
       `web_parcours` mediumtext,
       `sport_parcours` varchar(3) NOT NULL,
       `frequent_parcours` tinyint(1) NOT NULL COMMENT '\n',
       PRIMARY KEY (`id_parcours`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `parcours_bis`;
    CREATE TABLE `parcours_bis` (
       `id_parcours_bis` int(11) NOT NULL AUTO_INCREMENT,
       `itineraire_parcours_bis` varchar(15) NOT NULL,
       `distance_parcours_bis` decimal(10,0) unsigned NOT NULL,
       `denivelee_parcours_bis` smallint(3) unsigned NOT NULL,
       `commentaires_parcours_bis` text,
       PRIMARY KEY (`id_parcours_bis`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    DROP TABLE IF EXISTS `velos`;
    CREATE TABLE `velos` (
       `id_velos` int(11) NOT NULL AUTO_INCREMENT,
       `nom_velos` varchar(45) NOT NULL,
       `commentaire_velo` text,
       PRIMARY KEY (`id_velos`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `multisports`;
    CREATE TABLE `multisports` (
       `id_multisports` int(11) NOT NULL AUTO_INCREMENT,
       `nom_multisports` varchar(45) NOT NULL,   
       `parcours_id_parcours1` int(11) DEFAULT NULL,
       `parcours_id_parcours2` int(11) DEFAULT NULL,
       `parcours_id_parcours3` int(11) DEFAULT NULL,
     
       PRIMARY KEY (`id_multisports`),
       CONSTRAINT `parcours_id_parcours1_ibfk` FOREIGN KEY (`parcours_id_parcours1`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours2_ibfk` FOREIGN KEY (`parcours_id_parcours2`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours3_ibfk` FOREIGN KEY (`parcours_id_parcours3`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `sorties`;
    CREATE TABLE `sorties` (
       `id_sorties` int(17) NOT NULL AUTO_INCREMENT,
       `date_sorties` date NOT NULL,
       `HHHtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SStemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `moyenne_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `poids_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `forme_sorties` varchar(45) DEFAULT NULL,
       `commentaire_court_sorties` varchar(100) DEFAULT NULL,  
       `commentaire_long_sorties` text DEFAULT NULL,
       `denivsup_sorties` smallint(5) unsigned DEFAULT NULL,
       `distsup_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `HHsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SSsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `parcours_id_parcours` int(11) DEFAULT NULL,
       `velos_id_velos` int(11) DEFAULT NULL,
       `multisports_id_multisports` int(11) NOT NULL,
       `ordre_sorties` int(11) DEFAULT 1,
       `HHHapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SSapres_sorties` tinyint(3) unsigned DEFAULT NULL,
       PRIMARY KEY (`id_sorties`),
       KEY `id_parcours_idx` (`parcours_id_parcours`),
       KEY `iid_velos_idx` (`velos_id_velos`),
       KEY `id_multisports_idx` (`multisports_id_multisports`),
       CONSTRAINT `sorties_ibfk_1` FOREIGN KEY (`multisports_id_multisports`) REFERENCES `multisports` (`id_multisports`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_ibfk_2` FOREIGN KEY (`parcours_id_parcours`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_ibfk_3` FOREIGN KEY (`velos_id_velos`) REFERENCES `velos` (`id_velos`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    DROP TABLE IF EXISTS `sorties_bis`;
    CREATE TABLE `sorties_bis` (
       `id_sorties_bis` int(13) NOT NULL AUTO_INCREMENT,
       `sorties_id_sorties` int(17) NOT NULL,
       `parcours_bis_id_parcours_bis` int(11) NOT NULL,
       `intineraire_sorties_bis` varchar(15) NOT NULL,
       `HHHtemps_sorties_bis` int(3) NOT NULL,
       `MMtemps_sorties_bis` int(2) NOT NULL,
       `SStemps_sorties_bis` int(2) NOT NULL,
       `moyenne_sorties_bis` decimal(10,0) NOT NULL,
       `commentaire_sorties_bis` mediumtext,
       `passage_sorties_bis` int(1) NOT NULL,
       PRIMARY KEY (`id_sorties_bis`),
       KEY `id_parcours_bis_idx` (`parcours_bis_id_parcours_bis`),
       KEY `id_sorties_idx` (`sorties_id_sorties`),
       CONSTRAINT `sorties_bis_ibfk_1` FOREIGN KEY (`parcours_bis_id_parcours_bis`) REFERENCES `parcours_bis` (`id_parcours_bis`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_bis_ibfk_2` FOREIGN KEY (`sorties_id_sorties`) REFERENCES `sorties` (`id_sorties`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
     
     
     
    DROP TABLE IF EXISTS `entretien_velos`;
    CREATE TABLE `entretien_velos` (
       `id_entretien_velos` int(11) NOT NULL AUTO_INCREMENT,
       `velos_id_velos` int(11) NOT NULL,
       `reparation_entretien_velos` text,
       `commentaires_entretien_velos` text,
       PRIMARY KEY (`id_entretien_velos`),
       KEY `id_velos_idx` (`velos_id_velos`),
       CONSTRAINT `entretien_velos_ibfk_1` FOREIGN KEY (`velos_id_velos`) REFERENCES `velos` (`id_velos`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Mais adminer continue à tousser :
    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
    CREATE TABLE `multisports` (
       `id_multisports` int(11) NOT NULL AUTO_INCREMENT,
       `nom_multisports` varchar(45) NOT NULL,   
       `parcours_id_parcours1` int(11) DEFAULT NULL,
       `parcours_id_parcours2` int(11) DEFAULT NULL,
       `parcours_id_parcours3` int(11) DEFAULT NULL,
     
       PRIMARY KEY (`id_multisports`),
       CONSTRAINT `parcours_id_parcours1_ibfk` FOREIGN KEY (`parcours_id_parcours1`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours2_ibfk` FOREIGN KEY (`parcours_id_parcours2`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `parcours_id_parcours3_ibfk` FOREIGN KEY (`parcours_id_parcours3`) REFERENCES `parcours` (`id_parcours`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     
    Erreur dans la requête (1064): Syntax error near ') ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 12
     
    CREATE TABLE `sorties` (
       `id_sorties` int(17) NOT NULL AUTO_INCREMENT,
       `date_sorties` date NOT NULL,
       `HHHtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMtemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SStemps_sorties` tinyint(3) unsigned DEFAULT NULL,
       `moyenne_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `poids_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `forme_sorties` varchar(45) DEFAULT NULL,
       `commentaire_court_sorties` varchar(100) DEFAULT NULL,  
       `commentaire_long_sorties` text DEFAULT NULL,
       `denivsup_sorties` smallint(5) unsigned DEFAULT NULL,
       `distsup_sorties` decimal(10,0) unsigned DEFAULT NULL,
       `HHsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `MMsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `SSsup_sorties` tinyint(3) unsigned DEFAULT NULL,
       `parcours_id_parcours` int(11) DEFAULT NULL,
       `velos_id_velos` int(11) DEFAULT NULL,
       `multisports_id_multisports` int(11) NOT NULL,
       `ordre_sorties` int(11)...
     
    Erreur dans la requête (1215): Cannot add foreign key constraint
     
    CREATE TABLE `sorties_bis` (
       `id_sorties_bis` int(13) NOT NULL AUTO_INCREMENT,
       `sorties_id_sorties` int(17) NOT NULL,
       `parcours_bis_id_parcours_bis` int(11) NOT NULL,
       `intineraire_sorties_bis` varchar(15) NOT NULL,
       `HHHtemps_sorties_bis` int(3) NOT NULL,
       `MMtemps_sorties_bis` int(2) NOT NULL,
       `SStemps_sorties_bis` int(2) NOT NULL,
       `moyenne_sorties_bis` decimal(10,0) NOT NULL,
       `commentaire_sorties_bis` mediumtext,
       `passage_sorties_bis` int(1) NOT NULL,
       PRIMARY KEY (`id_sorties_bis`),
       KEY `id_parcours_bis_idx` (`parcours_bis_id_parcours_bis`),
       KEY `id_sorties_idx` (`sorties_id_sorties`),
       CONSTRAINT `sorties_bis_ibfk_1` FOREIGN KEY (`parcours_bis_id_parcours_bis`) REFERENCES `parcours_bis` (`id_parcours_bis`) ON DELETE NO ACTION ON UPDATE CASCADE,
       CONSTRAINT `sorties_bis_ibfk_2` FOREIGN KEY (`sorties_id_sorties`) REFERENCES `sorties` (`id_sorties`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     
    Erreur dans la requête (1215): Cannot add foreign key constraint
     
    CREATE TABLE `entretien_velos` (
       `id_entretien_velos` int(11) NOT NULL AUTO_INCREMENT,
       `velos_id_velos` int(11) NOT NULL,
       `reparation_entretien_velos` text,
       `commentaires_entretien_velos` text,
       PRIMARY KEY (`id_entretien_velos`),
       KEY `id_velos_idx` (`velos_id_velos`),
       CONSTRAINT `entretien_velos_ibfk_1` FOREIGN KEY (`velos_id_velos`) REFERENCES `velos` (`id_velos`) ON DELETE NO ACTION ON UPDATE CASCADE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     
    Erreur dans la requête (1064): Syntax error near ') ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 9

  8. #8
    Membre éprouvé
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Par défaut Type de données et FK
    Tu as une virgule de trop à la dernière ligne des contraintes pour "entretien_velos" et "multisports". Sinon, tout ce script fonctionne à merveille.

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Super merci.
    Les joies du copier-coller.
    Je n'ai pas un outil qui me permet de faire ce genre de contrôle bien que le message d'erreur aurait du me mettre sur la voie.
    Au fait, tu utilises quel outil pour faire du sql.
    Je cherche un outil simple, léger qui marche avec window XP à W10.
    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. interbase : types de donnés : AutoIncrement et Date ???
    Par delphien dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/04/2004, 18h29
  2. Type pour données de type email avec @
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/01/2004, 15h50
  3. Types de données interbase
    Par Clotilde dans le forum InterBase
    Réponses: 2
    Dernier message: 18/11/2003, 15h10
  4. Réponses: 2
    Dernier message: 22/09/2003, 12h23
  5. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 16h15

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