Bonjour, comment puis je traduire une relation de type 1 ---- 0,1 au niveau d'un schema ms sql server ?
Merci
Bonjour, comment puis je traduire une relation de type 1 ---- 0,1 au niveau d'un schema ms sql server ?
Merci
Bonjour,
Vous voulez dire dans un MPD SQL Server ou un MCD ?
@++![]()
Par une double jointure entre les clef primaires de chacune des tables.
Exemple :
Et si HOM est marié à FEM en 1:1 alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 T_HOM (HOM_ID, HOM_NOM) T_FEM (FEM_ID, FEM_NOM)
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ALTER TABLE T_HOM ADD FEM_ID INT NULL CONSTRAINT FK_HOM_FEM FOREIGN KEY REFERENCES T_FEM (FEM_ID) ALTER TABLE T_FEM ADD HOM_ID INT NULL CONSTRAINT FK_FEM_HOM FOREIGN KEY REFERENCES T_HOM (HOM_ID)
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Ma relation est la suivante : une demande peut avoir 0 ou 1 rejet mais le rejet a automatiquement une seule demande, si j'ai trés bien compris j'aurais une clé étrangère dans les deux coté ?
Oui, et il faudra faire une jointure avec les deux colonnes...
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
La double clé étrangère engendre un cycle, ce qui n’est jamais à recommander. Je propose une alternative.
Dans ce qui suit, j’utilise l’AGL Power AMC (V11).
Le rejet est une propriété de la demande. Conceptuellement, si vous décidez de définir une entité-type Demande et une entité-type Rejet, le MCD (représentation Entité/Relation) est alors le suivant :
![]()
Le MLD généré par l’AGL est le suivant :
![]()
La table Demande a pour clé primaire DemandeId.
La table Rejet a aussi pour clé primaire DemandeId, qui est simultanément clé étrangère.
Le code SQL généré par l’AGL est le suivant :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Create Table Demande ( DemandeId Int Not null, DemandeTexte Varchar(128) Not null, Constraint Demande_PK Primary Key (DemandeId) ) ; Create Table Rejet ( DemandeId Int Not null, RejetMotif Varchar(128) Not null, Constraint Rejet_PK Primary Key (DemandeId), Constraint Rejet_Demande_FK1 Foreign Key (DemandeId) References Demande (DemandeId) On Delete Cascade ) ;
Diagramme proposé par SQL Server à partir du code ci-dessus :
![]()
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Partager