arpala
Messages postés3Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention21 janvier 2009
-
16 janv. 2009 à 15:49
arpala
Messages postés3Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention21 janvier 2009
-
21 janv. 2009 à 10:25
Bonjour à tous,
Alors voila, pour m'entrainer je m'amuse à créer des tables dans une base de donnée.
Mais la je tombe sur un os.
Primo mon fichier texte de création de table est:
create table type(
numero varchar(4),
notype varchar(6),
libelle varchar(12),
constraint pk_type primary key (numero,notype));
create table entreprise (
numero varchar(4),
nooccupant varchar(8),
raisonsoc varchar(16),
descact varchar(16),
rue varchar(16),
cp varchar(4),
ville varchar(16),
tel varchar(16),
mel varchar(16),
siteweb varchar(16),
constraint pk_entreprise primary key (numero,nooccupant));
create table local (
numero varchar(4),
dateactu varchar(8),
description varchar(36),
superficie varchar(16),
location varchar(16),
prix varchar(10),
nozoneact varchar(16),
notype varchar(16),
nooccupant varchar(16),
constraint pk_local primary key (numero),/jusque la c'est juste, l'erreur se trouve dans les 3 dernieres lignes.
constraint fk_zoneact foreign key (nozoneact) references zoneactivite(nozoneact),
constraint fk_noty foreign key (notype) references type(notype),
constraint fk_nouc foreign key (nooccupant) references entreprise(nooccupant));
pas très complique pour la plupart d'entre vous, mais voila quand je vais sur phpmyadmin je copie colle tout sa et paf la table local a une erreur mais les autres sont créer.
Mon erreur est:
#1005 - Can't create table '.\bonne\local.frm' (errno: 150)
sur plusieurs forum ils disent que sa vient des contraintes mais moi je ne trouve pas d'erreur, si quelqu'un pouvait m'aider se serait sympa.
Merci d'avance à bientôt
A voir également:
La valeur d'une clé dupliquée rompt la contrainte unique
SQLpro
Messages postés35Date d'inscriptionsamedi 17 novembre 2007StatutMembreDernière intervention 8 février 20121 20 janv. 2009 à 23:55
Une contrainte FOREIGN KEY se greffe sur une autre contrainte de type PRIMARY KEY ou UNIQUE de la table mère.
Dans la définition de la contrainte FK_zoneact de votre table local, vous tentez d'utiliser la seule colonne zoneact qui ne correpond pas à la définition de contrainte PK (ou UNIQUE s'il en existait une) de la table zoneactivite que vous voulez référencer... C'est donc à juste titre que votre SGBDR râle !
Visiblement vous n'avez pas compris ce qu'est un modèle relationnel de données.
Une clef étrangère est en fait un ensemble de colonnes qui se trouve être clef primaire ou contrainte d'unicité d'une autre table. C'est aussi simple que cela.
Il me semble que votre modèle est furieusement bancal...
Il serait souhaitable que vous utilisiez un outil de modélisationa afin de faire ce travail. Cela vous éviterais de longues journées stériles et donc constituerais une économie drastique pour votre entreprise !
A +
Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL, SGBDR, modéles de données
SQL & SGBDR http://sqlpro.developpez.com/
arpala
Messages postés3Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention21 janvier 2009 21 janv. 2009 à 10:25
Salut c'est bon j'ai trouvé mon erreur sans connaitre les modèles relationnels de données et sans logiciel.
Il fallait juste que dans mes contraintes j'enleve nozoneact, notype, nooccupant, et que je remplace ces 3 par numero et voila.