Sur Power AMC, à partir de notre modèle physique de données générer précédemment,
cliquer sur « SGBD » de la barre de menu de Power AMC puis « Générer la base de
données ».
33
Sélectionnez le répertoire de sortie et le nom du fichier *.sql. Nous le nommerons
« Papyrus.sql ». Vous avez également la possibilité de configurer différentes options.
Le fichier est alors généré à l’emplacement indiquer.
34
Revenons sur le programme « Microsoft SQL Server Management Studio ». Cliquez droit sur
votre base de données « Papyrus » puis « Nouvelle requête ».
Copier / coller le contenu du fichier généré par Power AMC que nous avons nommé
« Papyrus.sql ». On peut également passer par le menu Fichier / Ouvrir / Fichiers…
35
À ce stade, on peut modifier le code SQL afin d’ajouter des contraintes, de modifier les types…
Nous verrons plus loin qu’il existe d’autres possibilités.
/*==============================================================*/
/* Nom de SGBD : Microsoft SQL Server 2008 */
/* Date de création : 17/01/2011 14:29:07 */
/*==============================================================*/
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and
o.type = 'F')
where r.fkeyid = object_id('ENTCOM') and o.name =
'FK_ENTCOM_ATTRIBUER_FOURNISS')
alter table ENTCOM
drop constraint FK_ENTCOM_ATTRIBUER_FOURNISS
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and
o.type = 'F')
where r.fkeyid = object_id('LIGCOM') and o.name =
'FK_LIGCOM_COMPORTER_ENTCOM')
alter table LIGCOM
drop constraint FK_LIGCOM_COMPORTER_ENTCOM
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and
o.type = 'F')
where r.fkeyid = object_id('LIGCOM') and o.name =
'FK_LIGCOM_REFERENCE_PRODUIT')
alter table LIGCOM
drop constraint FK_LIGCOM_REFERENCE_PRODUIT
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and
o.type = 'F')
where r.fkeyid = object_id('VENDRE') and o.name =
'FK_VENDRE_VENDRE_PRODUIT')
36
alter table VENDRE
drop constraint FK_VENDRE_VENDRE_PRODUIT
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and
o.type = 'F')
where r.fkeyid = object_id('VENDRE') and o.name =
'FK_VENDRE_VENDRE2_FOURNISS')
alter table VENDRE
drop constraint FK_VENDRE_VENDRE2_FOURNISS
go
if exists (select 1
from sysindexes
where id = object_id('ENTCOM')
and name = 'ATTRIBUER_FK'
and indid > 0
and indid < 255)
drop index ENTCOM.ATTRIBUER_FK
go
if exists (select 1
from sysobjects
where id = object_id('ENTCOM')
and type = 'U')
drop table ENTCOM
go
if exists (select 1
from sysobjects
where id = object_id('FOURNISSEUR')
and type = 'U')
drop table FOURNISSEUR
go
if exists (select 1
from sysindexes
where id = object_id('LIGCOM')
and name = 'COMPORTER_FK'
and indid > 0
and indid < 255)
drop index LIGCOM.COMPORTER_FK
go
if exists (select 1
from sysindexes
where id = object_id('LIGCOM')
and name = 'REFERENCER_FK'
and indid > 0
and indid < 255)
drop index LIGCOM.REFERENCER_FK
go
if exists (select 1
from sysobjects
where id = object_id('LIGCOM')
and type = 'U')
drop table LIGCOM
go
37
if exists (select 1
from sysobjects
where id = object_id('PRODUIT')
and type = 'U')
drop table PRODUIT
go
if exists (select 1
from sysindexes
where id = object_id('VENDRE')
and name = 'VENDRE2_FK'
and indid > 0
and indid < 255)
drop index VENDRE.VENDRE2_FK
go
if exists (select 1
from sysindexes
where id = object_id('VENDRE')
and name = 'VENDRE_FK'
and indid > 0
and indid < 255)
drop index VENDRE.VENDRE_FK
go
if exists (select 1
from sysobjects
where id = object_id('VENDRE')
and type = 'U')
drop table VENDRE
go
/*==============================================================*/
/* Table : ENTCOM */
/*==============================================================*/
create table ENTCOM (
NUMCOM int not null,
NUMFOU int not null,
OBSCOM varchar(25) not null,
DATCOM datetime not null,
constraint PK_ENTCOM primary key nonclustered (NUMCOM)
)
go
/*==============================================================*/
/* Index : ATTRIBUER_FK */
/*==============================================================*/
create index ATTRIBUER_FK on ENTCOM (
NUMFOU ASC
)
go
/*==============================================================*/
/* Table : FOURNISSEUR */
/*==============================================================*/
create table FOURNISSEUR (
NUMFOU int not null,
NOMFOU varchar(30) not null,
RUEFOU varchar(30) not null,
POSFOU varchar(5) not null,
VILFOU varchar(30) not null,
38
CONFOU varchar(15) not null,
SATISF smallint not null,
constraint PK_FOURNISSEUR primary key nonclustered (NUMFOU)
)
go
/*==============================================================*/
/* Table : LIGCOM */
/*==============================================================*/
create table LIGCOM (
NUMCOM int not null,
NUMLIG smallint not null,
CODART char(4) not null,
QTELIV smallint not null,
DERLIV datetime not null,
QTECDE smallint not null,
PRIUNI money not null,
constraint PK_LIGCOM primary key nonclustered (NUMCOM, NUMLIG)
)
go
/*==============================================================*/
/* Index : REFERENCER_FK */
/*==============================================================*/
create index REFERENCER_FK on LIGCOM (
CODART ASC
)
go
/*==============================================================*/
/* Index : COMPORTER_FK */
/*==============================================================*/
create index COMPORTER_FK on LIGCOM (
NUMCOM ASC
)
go
/*==============================================================*/
/* Table : PRODUIT */
/*==============================================================*/
create table PRODUIT (
CODART char(4) not null,
LIBART varchar(30) not null,
STKALE smallint not null,
STKPHY smallint not null,
QTEANN smallint not null,
UNIMES varchar(5) not null,
constraint PK_PRODUIT primary key nonclustered (CODART)
)
go
/*==============================================================*/
/* Table : VENDRE */
/*==============================================================*/
create table VENDRE (
CODART char(4) not null,
NUMFOU int not null,
DELLIV smallint not null,
QTE1 smallint not null,
PRIX1 money not null,
QTE2 smallint not null,
39
PRIX2 money not null,
QTE3 smallint not null,
PRIX3 money null,
constraint PK_VENDRE primary key (CODART, NUMFOU)
)
go
/*==============================================================*/
/* Index : VENDRE_FK */
/*==============================================================*/
create index VENDRE_FK on VENDRE (
CODART ASC
)
go
/*==============================================================*/
/* Index : VENDRE2_FK */
/*==============================================================*/
create index VENDRE2_FK on VENDRE (
NUMFOU ASC
)
go
alter table ENTCOM
add constraint FK_ENTCOM_ATTRIBUER_FOURNISS foreign key (NUMFOU)
references FOURNISSEUR (NUMFOU)
go
alter table LIGCOM
add constraint FK_LIGCOM_COMPORTER_ENTCOM foreign key (NUMCOM)
references ENTCOM (NUMCOM)
go
alter table LIGCOM
add constraint FK_LIGCOM_REFERENCE_PRODUIT foreign key (CODART)
references PRODUIT (CODART)
go
alter table VENDRE
add constraint FK_VENDRE_VENDRE_PRODUIT foreign key (CODART)
references PRODUIT (CODART)
go
alter table VENDRE
add constraint FK_VENDRE_VENDRE2_FOURNISS foreign key (NUMFOU)
references FOURNISSEUR (NUMFOU)
go
Pour exécuter votre requête, cliquez sur le bouton
pour lancer la requête. Si votre
requête c’est bien exécuté, un message : « Commande(s) réussie(s) » s’affiche alors.
40
Cliquez droit pour actualiser vos données.
Par l’interface
Vous pouvez créer vos tables manuellement dans « Microsoft SQL Server Management
Studio ». Sur la base de données que vous venez de créer, sélectionnez le dossier table puis
cliquez droit / Nouvelle table…
41
Indiquez le nom de la colonne, le type de données à l’aide du menu déroulant et décochez la
case si vous ne souhaitez pas autoriser les valeurs null, c'est-à-dire l’absence d’une donnée
dans la colonne.
N’oubliez pas de définir la clé primaire de vos tables. Cliquez droit / Définir la clé primaire.
Une fois créer, vous pouvez l’enregistrer en cliquant droit Enregistrer Table.
42
Vous devrez alors donner un nom à votre table.
Pour définir la clé étrangère, cliquez droit puis « Relations ».
Puis cliquez sur ajouter pour créer un relation. La relation s'affiche dans la liste Relation
sélectionnée avec un nom fourni par système au format FK_<tablename>_<tablename>, où
tablename est le nom de la table de clé étrangère. Sélectionnez-la puis dans « Spécification
de tables et color » cliquez sur
.
43
Dans la liste déroulante Clé primaire de la boîte de dialogue Tables et Colonnes, choisissez la
table qui sera du côté clé primaire de la relation.
Dans la grille située au-dessous, choisissez les colonnes qui participent à la clé primaire de la
table. Dans la cellule de la grille située à gauche de chaque colonne, choisissez la colonne de
clé étrangère correspondante dans la table de clé étrangère.
Le Concepteur de tables propose un nom pour la relation. Pour changer ce nom, modifiez le
contenu de la zone de texte à Identité. Cliquez sur OK pour créer la relation.
44
Les colonnes que vous choisissez pour la clé étrangère doivent avoir le même type de
données que les colonnes primaires correspondantes. Chacune des clés doit comprendre un
nombre égal de colonnes. Par exemple, si la clé primaire de la table du côté clé primaire de la
relation est composée de deux colonnes, vous devez faire correspondre chacune de ces
colonnes à une colonne de la table pour le côté clé étrangère de la relation.