CREATE TABLE employee( empid int auto_increment primary key, empfirstname varchar(200) not null, emplastname varchar(200) not null, email varchar(200) not null, officenumber int not null ); CREATE TABLE customer( custid int auto_increment primary key, firstname varchar(200) not null, lastname varchar(200) not null, address varchar(200) not null, contact varchar(200) ); CREATE TABLE product( productid int auto_increment primary key, productdesc varchar(500) not null, weight int not null, unit_cost int not null ); CREATE TABLE productorder( productid int, orderid int, primary key(productid,orderid), constraint fk3 foreign key (productid) references product(productid), constraint fk4 foreign key (orderid) references productorder(orderid) ); CREATE TABLE salesorder( salesorderid int auto_increment primary key, empid int not null, custid int not null, orderdate date not null, shippingmethod varchar (200) not null, constraint a_fk1 foreign key (empid) references employee(empid), constraint a_fk2 foreign key (custid) references customer(custid) );
3 Réponses :
Son normal, se réfère à la table elle-même: p>
Qu'est-ce que cela signifie faire ?:
CREATE TABLE productorder( orderid int auto_increment primary key, productid int, constraint fk3 foreign key (productid) references product(productid) );
Pour atteindre la contrainte d'auto-référencement sur le tableau producteur code>, vous devez ajouter une autre colonne avec le même type et faire une référencement typique.
Par exemple:
Avec quel RDBR travaillez-vous?
Peut-être que je déduit trop ici, mais cela ne serait-il pas plus logique pour
salersorder code> d'avoir une colonne de commande code>? Sinon, vous n'avez aucun moyen réel de relier une commande de vente avec des commandes de produits. Et dans ce cas, votre clé étrangèrefk4 code> référencevendeur (orderid) code>, et vous devez créer la contrainte FK après avoir créé le vendeurcode> table.