IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Représenter une relation 1 -- 0,1 dans un schéma


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut Représenter une relation 1 -- 0,1 dans un schéma
    Bonjour, comment puis je traduire une relation de type 1 ---- 0,1 au niveau d'un schema ms sql server ?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous voulez dire dans un MPD SQL Server ou un MCD ?

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Par une double jointure entre les clef primaires de chacune des tables.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T_HOM (HOM_ID, HOM_NOM)
    T_FEM (FEM_ID, FEM_NOM)
    Et si HOM est marié à FEM en 1:1 alors :

    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)
    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/ * * * * *

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    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é ?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    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/ * * * * *

  6. #6
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 218
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Citation Envoyé par Msysteme Voir le message
    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é ?
    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 :


Discussions similaires

  1. Comment représenter une contrainte dans une relation ?
    Par ecervetti dans le forum Langage SQL
    Réponses: 11
    Dernier message: 16/02/2009, 16h35
  2. [MCD] Représenter une relation d'aggrégation
    Par ben_inpt dans le forum Schéma
    Réponses: 9
    Dernier message: 27/03/2008, 09h38
  3. Réponses: 18
    Dernier message: 26/11/2007, 15h43
  4. [XML Schema] Représenter une auto-relation en XSD
    Par Benne dans le forum Valider
    Réponses: 1
    Dernier message: 16/03/2006, 17h00
  5. Question sur une relation ternaire dans un MCD
    Par sylsau dans le forum Schéma
    Réponses: 5
    Dernier message: 05/03/2006, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo