rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[SQL] Problème de création de tables

Le0n, le lundi 18 décembre 2006 à 20:14:30
Donc voici :

CREATE TABLE MEMBRE (
DateInscription date check (DateInscription <= CURRENT_DATE),
NomDiscussion char(40) NOT NULL,
NomStatut char(15) NOT NULL,
MotDePasse char(40) NOT NULL,
Htaccess char(40) NOT NULL,
Pseudo char(15) NOT NULL,
UNIQUE (Pseudo),
PRIMARY KEY (Pseudo, NomDiscussion, NomStatut),
FOREIGN KEY NomStatut REFERENCES STATUT(NomStatut),
FOREIGN KEY NomDiscussion REFERENCES DISCUSSION(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES DONNEES(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES STOCKAGE(NomDiscussion),
FOREIGN KEY Pseudo REFERENCES STATUT(Pseudo),
FOREIGN KEY Pseudo REFERENCES DISCUSSION(Pseudo) )



CREATE TABLE DISCUSSION (
Pseudo char(15) NOT NULL,
NomSection char(15) NOT NULL,
QuotaDiscussion integer check ( QuotaDiscussion >= 0),
NomDiscussion char(40) NOT NULL,
PRIMARY KEY (Pseudo, NomDiscussion, NomSection),
FOREIGN KEY NomSection REFERENCES STATUT(NomSection),
FOREIGN KEY NomDiscussion REFERENCES STOCKAGE(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES MEMBRE(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES DONNEES(NomDiscussion),
FOREIGN KEY Pseudo REFERENCES STATUT(Pseudo),
FOREIGN KEY Pseudo REFERENCES MEMBRE(Pseudo) )

CREATE TABLE STOCKAGE (
NomStcockage char(200) NOT NULL UNIQUE, check (NomStcockage LIKE "ftp://%"),
Type char(15) NOT NULL,
VitesseUp integer check ( VitesseUp > 40),
VitesseDl integer check ( VitesseDl > 100),
NbConnexions integer check ( NbConnexions > 0),
PlaceDD integer NOT check ( PlaceDD > 0),
Localisation char(15) check (Localisation <> RIPE NCC),
NomDiscussion char(40) NOT NULL,
PRIMARY KEY (NomStcockage, NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES DONNEES(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES DISCUSSION(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES MEMBRE(NomDiscussion) )



CREATE TABLE STATUT (
Pseudo char(15) NOT NULL,
NomStatut char(15) NOT NULL,
QuotaTotal integer check ( QuotaTotal >= QuotaCours)
QuotaMois integer check (QuotaMois >= 0),
QuotaCours integer check (QuotaMois >= 0),
NomSection char(15) NOT NULL,
UNIQUE (Pseudo),
PRIMARY KEY (Pseudo, NomStatut, NomSection),
FOREIGN KEY NomStatut REFERENCES MEMBRE(NomStatut),
FOREIGN KEY Pseudo REFERENCES DISCUSSION(Pseudo),
FOREIGN KEY Pseudo REFERENCES MEMBRE(Pseudo)
FOREIGN KEY NomSection REFERENCES DISCUSSION(NomSection) )




CREATE TABLE DONNEES (
Archivage char(40) NOT NULL,
Encodage char(40) NOT NULL,
TailleDonnee integer check ( TailleDonnee >= 0),
NomDiscussion char(40) NOT NULL,
NomDonnee char(40) NOT NULL,
TypeDonnee char(15) NOT NULL,
Langue char(40) NOT NULL,
PRIMARY KEY (NomDiscussion, NomDonnee),
FOREIGN KEY NomDiscussion REFERENCES STOCKAGE(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES DISCUSSION(NomDiscussion),
FOREIGN KEY NomDiscussion REFERENCES MEMBRE(NomDiscussion) )


Voila ce que j'ai ecrit, mais ca marche pas vraiment, surement les clés primares / etrangeres qui deconnent, mais je sais pas (plus) pourquoi.

Merci de me filer un coup de main ;))

@+
Configuration: Windows XP
Firefox 2.0
ySQL Server 5.1
Répondre à Le0n  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mardi 19 décembre 2006 à 10:21:28
Bonjour,

Quelques questions, pour commencer...

1 - quel SGBD utilises-tu ?
2 - quel message d'erreur as-tu ?

Quand on aura ça, on pourra commencer à t'aider ;)

Xavier
Répondre à Reivax962

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Carnotzet, le mardi 19 décembre 2006 à 20:36:38
Hello,

Tout d'abord, je te conseille de créer chaque table séparément. Comme ça si ça ne marche pas, tu as plus vite repéré l'erreur.

Ensuite, pour revenir à ta BD, plusieurs choses:

1° L'attribut CURRENT_DATE devrait être remplacé par CURDATE si tu utilises mysql.

2° Les noms des clés étrangères doivent être entre parenthèses

3°La contrainte CHECK devrait être placée à la fin, comme les définitions de clés.

4° l'attribut UNIQUE est inutile pour la clé primaire (la clé primaire est d'office unique, sans avoir besoin de le préciser)

5° Les contraintes doivent avoir un nom (par exemple CONSTRAINT nom_de_la_contrainte PRIMARY KEY (nom_de_l'attribut)

Ainsi, la 1ère table devient:

CREATE TABLE MEMBRE (
DateInscription date,
NomDiscussion char(40) NOT NULL,
NomStatut char(15) NOT NULL,
MotDePasse char(40) NOT NULL,
Htaccess char(40) NOT NULL,
Pseudo char(15) NOT NULL,
CONSTRAINT C1 PRIMARY KEY (Pseudo, NomDiscussion, NomStatut),
CONSTRAINT C2 FOREIGN KEY (NomStatut) REFERENCES STATUT(NomStatut),
CONSTRAINT C3 FOREIGN KEY (NomDiscussion) REFERENCES STATUT(NomDiscussion),
CONSTRAINT C4 FOREIGN KEY (NomDiscussion) REFERENCES DONNEES(NomDiscussion),
CONSTRAINT C5 FOREIGN KEY (NomDiscussion) REFERENCES STOCKAGE(NomDiscussion),
CONSTRAINT C6 FOREIGN KEY (Pseudo) REFERENCES STATUT(Pseudo),
CONSTRAINT C7 FOREIGN KEY (Pseudo) REFERENCES DISCUSSION(Pseudo))

Voilà, à toi de jouer pour le reste...


Maintenant, si je peux me permettre, et si tu peux l'éviter, je te déconseille une clé primaire à trois attributs. Deux sont en règle générale suffisantes (voir souvant une seule...)

Bonne chance
Répondre à Carnotzet

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 françois, le jeudi 25 janvier 2007 à 12:23:32
essaye de créér tes tables sans toute foi précisé la migration des clés. Mais rassure toi que les types et tailles des clés étrangère sont respectés.
Répondre à françois
Logiciels pertinents trouvés dans les téléchargements
Télécharger Easy Office 1.1.1Easy Office - EasyOffice est une suite bureautique multilingue (Anglais et allemand seulement) possédant une interface graphique très...Catégorie: Suite bureautique
Licence: Freeware/gratuit
Télécharger PDF Creator 0.9.5PDF Creator - PDF Creator est un outil gratuit permettant de créer des PDF à partir de presque n'importe quelle application capable...Catégorie: PDF
Licence: Open Source
Télécharger AVS Disc Creator 2.1.5.100AVS Disc Creator - Avec AVS DiscCreator vous pouvez rapidement graver vos données sur CD/DVD et Blu-ray disc. <h2>Fonctionnalités</h2> ...Catégorie: Gravure
Licence: Freeware/gratuit
Télécharger LC ISO Creator 1.1LC ISO Creator - LC ISO Creator est très simple: Il permet de créer un fichier .ISO à partir de vos CD. Cela vous permet ensuite...Catégorie: Gravure
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [Sql]create table probleme »