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

Développement SQL Server Discussion :

Association ternaire et contrainte de partition


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chimiste senior, développeur junior
    Inscrit en
    Mars 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Chimiste senior, développeur junior

    Informations forums :
    Inscription : Mars 2019
    Messages : 53
    Par défaut Association ternaire et contrainte de partition
    Bonjour,

    j'ai actuellement une base de données contenant 3 entitées :

    T_VERNIS avec pour PK VER_ID
    T_REVETEMENT avec pour PK REV_ID (1 revetement constitué de 1 à n vernis)
    T_ANALYSE avec pour PK ANA_ID (1 revetement rattaché à 0 à n analyses)

    Je viens d'apprendre que mon MCD ne colle plus car certaines analyses fournies directement par le fournisseur de vernis ne concerne pas un revêtement complet mais un vernis.
    Je pensais donc créer un lien entre T_ANALYSE et T_VERNIS avec pour cardinalité 1 vernis rattaché à 0 à n analyse ; créant ainsi une association ternaire. est ce correct?
    question suivante : actuellement l'attribut REV_ID de mon entité T_ANALYSE est non null, dans mon nouveau MCD, il faudrait que je modifie ma contrainte pour avoir une contrainte de partition : REV_ID ou VER_ID non null mais il ne faut pas que les 2 soient non null pour une même occurence.
    j'ai essayé une requete du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    alter table T_ANALYSE
    add constraint REV_ID not null OR VER_ID not null
    mais cela ne fonctionne pas.
    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    1) contrainte CHECK au niveau du MPD avec obligation de vernis ou revêtement, mais pas les deux à la fois
    2) ajouter une table générique de type "surface" ou couche et gérer un héritage exclusif


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

  3. #3
    Membre averti
    Homme Profil pro
    Chimiste senior, développeur junior
    Inscrit en
    Mars 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Chimiste senior, développeur junior

    Informations forums :
    Inscription : Mars 2019
    Messages : 53
    Par défaut
    contrainte "CHECK" au niveau du MPD
    ok donc directement dans SQL SERVER, je vais regarder l'utilisation de CHECK

    ajouter une table générique de type "surface" ou couche et gérer un héritage exclusif
    c'est bizarre je trouve un héritage car l'un compose l'autre. Séparer des véhicules en camion ou voiture pour séparer des attributs différents je comprends mais ici, les revêtements sont composés d'un ou plusieurs vernis.
    De plus ayant commencé le développement en C# ca m'arrangerai de ne pas trop modifier le modèle ma BDD ... tu me diras je travaille principalement sur des vues donc ça devrait aller ... mais cette histoire d'héritage me laisse perplexe.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Puiss51 Voir le message
    c'est bizarre je trouve un héritage car l'un compose l'autre. Séparer des véhicules en camion ou voiture pour séparer des attributs différents je comprends mais ici, les revêtements sont composés d'un ou plusieurs vernis.
    De plus ayant commencé le développement en C# ca m'arrangerai de ne pas trop modifier le modèle ma BDD ... tu me diras je travaille principalement sur des vues donc ça devrait aller ... mais cette histoire d'héritage me laisse perplexe.
    L'un n'empêche pas l'autre....

    Tu peut avoir un vernis direct ou (exclusif) bien un revêtement composé de différentes couches de vernis et dans ce cas il y aura aussi une association n:m entre vernis et revêtement...

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

  5. #5
    Membre averti
    Homme Profil pro
    Chimiste senior, développeur junior
    Inscrit en
    Mars 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Chimiste senior, développeur junior

    Informations forums :
    Inscription : Mars 2019
    Messages : 53
    Par défaut
    J'ai trouvé pour CHECK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    alter table T_ANALYSE
    add constraint CK_Partition CHECK ([REV_ID] IS NOT NULL OR [VER_ID] IS NOT NULL)
    mais je suis toujours tenté d'ajouter directement VER_ID comme clé étrangère supplémentaire à mon entité T_ANALYSE...

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Incomplet comme contrainte car les deux peuvent être valués ce qu'il faut éviter....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter table T_ANALYSE
    add constraint CK_Partition CHECK ([REV_ID] IS NOT NULL AND [VER_ID] IS NULL OR [REV_ID] IS NULL AND [VER_ID] IS NOT NULL)
    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/ * * * * *

  7. #7
    Membre averti
    Homme Profil pro
    Chimiste senior, développeur junior
    Inscrit en
    Mars 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Chimiste senior, développeur junior

    Informations forums :
    Inscription : Mars 2019
    Messages : 53
    Par défaut
    Ha oui très juste ! Merci pour de la correction.
    Pourrais tu m'expliquer le problème que pose ma solution de clé étrangère VER _ID dans T_ANALYSE par rapport a ta proposition d'héritage, je cherche depuis ce matin mais je ne comprends pas. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MCD] Musique : Contrainte sur une association ternaire
    Par Thomas_Dotnet dans le forum Schéma
    Réponses: 4
    Dernier message: 10/11/2016, 19h45
  2. Réponses: 11
    Dernier message: 15/06/2011, 16h10
  3. Réponses: 8
    Dernier message: 25/01/2008, 14h38
  4. Pb avec une association ternaire
    Par jamy79 dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/11/2006, 11h38
  5. Réponses: 1
    Dernier message: 17/10/2006, 20h15

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