Mysql et clef etrangere

Mysql et clef etrangere - SQL/NoSQL - Programmation

Marsh Posté le 16-11-2005 à 19:40:09    

salut a tous !
 
voila, j'ai bien lu le manuel mysql si dessous,
 
http://dev.mysql.com/doc/refman/5. [...] aints.html
 
http://dev.mysql.com/doc/refman/5. [...] aints.html
 
mais voila, mais clef étrangère ne marche pas !
alors, si quelqun a un instant pour tester ce script, et voir ou est l'erreur, ouest l'indice qui va pas, ca serait cool.
j'ai passé 3 heure dessus, et la, j'ai beau le lire, je vois rien !
 

Code :
  1. CREATE TABLE `has_claim` (
  2.   `CLIENT_ID` int(10) unsigned NOT NULL default '0',
  3.   `CLAIM_ID` int(10) unsigned NOT NULL default '0',
  4.   PRIMARY KEY  (`CLIENT_ID`,`CLAIM_ID`),
  5.   INDEX (`CLIENT_ID`,`CLAIM_ID`)
  6. ) TYPE=InnoDB;
  7. CREATE TABLE `is_insure` (
  8.   `CLIENT_ID` int(10) unsigned NOT NULL default '0',
  9.   `CONTRACT_TYPE` int(10) unsigned NOT NULL default '0',
  10.   PRIMARY KEY  (`CLIENT_ID`,`CONTRACT_TYPE`),
  11.   INDEX (`CLIENT_ID`,`CONTRACT_TYPE`)
  12. ) TYPE=InnoDB;
  13. CREATE TABLE `damage_type` (
  14.   `DAMAGE_TYPE` int(10) unsigned NOT NULL default '0',
  15.   `CAR_DAMAGE` decimal(10,0) default '1',
  16.   `IMMATRICULATION_CAR_1` decimal(1,0) default '2',
  17.   `IMMATRICULATION_CAR_2` decimal(1,0) default '3',
  18.   `CIVIL_DAMAGE` decimal(1,0) NOT NULL default '0',
  19.   `PRIVATE_RESPONSABILITY` decimal(1,0) default '5',
  20.   `PETS_RESPONSABILITY` decimal(1,0) default '6',
  21.   `BUILDER_RESPONSABILITY` decimal(1,0) default '7',
  22.   `HOUSE_LANDOWNER_RESPONSABILITY` decimal(1,0) default '8',
  23.   `FURNITURE_DAMAGE` decimal(1,0) default '9',
  24.   `FIRE` decimal(1,0) default '10',
  25.   `THUNDERSTORM` decimal(1,0) default '11',
  26.   `ELEMENTARY` decimal(1,0) default '12',
  27.   `GLASS_BRAKE` decimal(1,0) default '13',
  28.   `WATTER` decimal(1,0) default '14',
  29.   `BURGLARY` decimal(1,0) default '15',
  30.   `HOUSE_DAMAGE` decimal(1,0) default '16',
  31.   PRIMARY KEY  (`DAMAGE_TYPE`),
  32.   INDEX (`DAMAGE_TYPE`)
  33. ) TYPE=InnoDB COMMENT='InnoDB free: 4096 kB';
  34. CREATE TABLE `claim` (
  35.   `CLAIM_ID` bigint(20) unsigned NOT NULL auto_increment,
  36.   `CUSTOMER_ID` bigint(20) unsigned NOT NULL default '0',
  37.   `CUSTOMER_NAME` varchar(64) NOT NULL default '',
  38.   `CONTRACT_ID` bigint(20) unsigned NOT NULL default '0',
  39.   `CLAIM_CATEGORY` varchar(64) NOT NULL default '',
  40.   `CLAIM_DESCRIPTION` varchar(255) NOT NULL default '',
  41.   `CLAIM_DATE` datetime NOT NULL default '0000-00-00 00:00:00',
  42.   `DAMAGE_AMOUNT` decimal(2,0) NOT NULL default '0',
  43.   `PICTURE` blob NOT NULL,
  44.   `CLAIM_STATUS` varchar(16) NOT NULL default '',
  45.   `ACTOR` varchar(45) NOT NULL default '',
  46.   `DAMAGE_STREET` varchar(45) NOT NULL default '',
  47.   `DAMAGE_HOUSE_NUMBER` decimal(4,0) NOT NULL default '0',
  48.   `DAMAGE_TOWN` varchar(45) NOT NULL default '',
  49.   `DAMAGE_TOWN_POST_CODE` decimal(5,0) NOT NULL default '0',
  50.   `DAMAGE_TYPE` int(10) unsigned NOT NULL default '0',
  51.   PRIMARY KEY  (`CLAIM_ID`),
  52.   INDEX (`CLAIM_ID`,`DAMAGE_TYPE`)
  53. ) TYPE=InnoDB;
  54. CREATE TABLE `client` (
  55.   `CLIENT_ID` int(10) unsigned NOT NULL auto_increment,
  56.   `GENDER` decimal(1,0) NOT NULL default '0',
  57.   `NAME` varchar(255) NOT NULL default '',
  58.   `FAMILY_NAME` varchar(255) NOT NULL default '',
  59.   `BIRTHDATE` datetime NOT NULL default '0000-00-00 00:00:00',
  60.   `ADDRESS` varchar(255) NOT NULL default '',
  61.   `HOUSE_NUMBER` decimal(4,0) NOT NULL default '0',
  62.   `POST_CODE` decimal(5,0) NOT NULL default '0',
  63.   `TOWN` varchar(255) NOT NULL default '',
  64.   `PHONE1` decimal(15,0) NOT NULL default '0',
  65.   `PHONE1_TIME_FROM` decimal(2,0) NOT NULL default '0',
  66.   `PHONE1_TIME_TO` decimal(2,0) NOT NULL default '0',
  67.   `PHONE2` decimal(15,0) NOT NULL default '0',
  68.   `PHONE2_TIME_FROM` decimal(2,0) NOT NULL default '0',
  69.   `PHONE2_TIME_TO` decimal(2,0) NOT NULL default '0',
  70.   `EMAIL` varchar(150) NOT NULL default '',
  71.   `CONTRACT_TYPE` decimal(1,0) NOT NULL default '0',
  72.   PRIMARY KEY  (`CLIENT_ID`),
  73.   INDEX (`CLIENT_ID`)
  74. ) TYPE=InnoDB;
  75. CREATE TABLE `contract_type` (
  76.   `CONTRACT_TYPE` int(10) unsigned NOT NULL auto_increment,
  77.   `DESCRIPTION` varchar(255) NOT NULL default '',
  78.   PRIMARY KEY  (`CONTRACT_TYPE`),
  79.   INDEX (`CONTRACT_TYPE`)
  80. ) TYPE=InnoDB;
  81. ALTER TABLE `csldev`.`damage_type` ADD CONSTRAINT `FK_damage_type_1` FOREIGN KEY `FK_damage_type_1` (`DAMAGE_TYPE`)
  82.     REFERENCES `claim` (`DAMAGE_TYPE`)
  83.     ON DELETE CASCADE
  84.     ON UPDATE CASCADE;
  85. ALTER TABLE `csldev`.`is_insure` ADD CONSTRAINT `FK_is_insure_2` FOREIGN KEY (`CLIENT_ID`)
  86.   REFERENCES `insured_client` (`CLIENT_ID`)
  87.   ON DELETE CASCADE
  88.   ON UPDATE CASCADE,
  89. ALTER TABLE `csldev`.`is_insure` ADD CONSTRAINT `FK_is_insure_1` FOREIGN KEY (`CLIENT_ID`)
  90. REFERENCES `insured_client` (`CLIENT_ID`)
  91.   ON DELETE CASCADE
  92.   ON UPDATE CASCADE;
  93. ALTER TABLE `csldev`.`has_claim` ADD CONSTRAINT `FK_has_claim_1` FOREIGN KEY `FK_has_claim_1` (`CLAIM_ID`)
  94.     REFERENCES `claim` (`CLAIM_ID`)
  95.     ON DELETE CASCADE
  96.     ON UPDATE CASCADE,
  97. ADD CONSTRAINT `FK_has_claim_2` FOREIGN KEY `FK_has_claim_2` (`CLIENT_ID`)
  98.     REFERENCES `client` (`CLIENT_ID`)
  99.     ON DELETE CASCADE
  100.     ON UPDATE CASCADE;


 
alors, une idée sur ces indices ?
 
Mars
   

Reply

Marsh Posté le 16-11-2005 à 19:40:09   

Reply

Marsh Posté le 17-11-2005 à 16:44:04    

bon, ba voila, apres avoir "partiellement" réussi a créer des clefs, j'ai viré celle pour lesquelles j'y arivais pas.
merci pour ceux qui on pris le temps de lire !
 
pour ceux qui ont le meme probleme, faire attention au type de chaque colone (meme si une conversion est sensée s'effectuer) et créer vos index 1 par 1, pas comme dans ma premiere table en haut.
et, bon courage !

Reply

Marsh Posté le 17-11-2005 à 21:33:29    

j'ai eu l'occasion de testé mysql le weekend dernier, c'est vraiment de la bouse niveau contrainte d'intégrité de référence. Quand je pense que certain appele ça un SGBD! halalala, il a encore bcp à faire pour rattrapé SQL SERVER et ORACLE.

Reply

Marsh Posté le 17-11-2005 à 22:46:00    

moi23372 a écrit :

j'ai eu l'occasion de testé mysql le weekend dernier, c'est vraiment de la bouse niveau contrainte d'intégrité de référence. Quand je pense que certain appele ça un SGBD! halalala, il a encore bcp à faire pour rattrapé SQL SERVER et ORACLE.


troll
MySQL est un honnete SGBD certes pas comparable aux mastodontes  precites (le prix des licences non plus d ailleurs)
la version 5 d ailleurs finira d integrer les fonctionnalites qui lui manquent
alors cracher sur mySQL non dtp

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed