Conception Et Réalisation (SQL Server) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Avec Power AMC

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

index-34_1.jpg

index-34_2.jpg

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

index-35_1.jpg

index-35_2.png

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

index-36_1.jpg

À 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

index-40_1.png

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

index-41_1.jpg

index-41_2.png

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

index-42_1.png

index-42_2.png

index-42_3.png

index-42_4.png

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

index-43_1.jpg

index-43_2.png

index-43_3.png

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

index-44_1.jpg

index-44_2.jpg

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

index-45_1.png

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.