# Gnral Dveloppement > ALM > Modlisation > Schma > [MCD] Valider mon schma

## SQLpro

Bonjour,

comme je suis en train de rcrire mon livre sur le SQL et qu'il sera disponible gratuitement sous forme PDF, j'entreprends la mise en place d'une nouvelle base de donnes pour les exemples et les tests. 
Outre la partie triviale qui concerne les personnes (physiques ou morale, avec tlphones, emails et adresses) que je ne prsenterais pas ici, voici la partie 2 qui concerne les employs. C'est un modle trs gnrique dans le cadre d'une entreprise de transport (de nom LOGISTYX, histoire de traverser le fleuve mythologique...) pour laquelle nous avons besoin d'une certaines finesse sur le recueil des informations de permis de conduire...

Je vous en donne le graphique, n'hsitez pas  me demander de plus amples informations...



Pour informations j'ai au moins deux autres parties en analyse : la gestion des colis dans les entrepts et la gestion des tournes de livraisons ou ramassage....

A +

----------


## fsmrel

Salut Fred,

Je ne sais pas trop ce que tu attends de nous en termes de validation, mais voici en tout cas quelques observations.


Rgles de gestion :

En leur absence, difficile dinterprter en toute objectivit ton MCD, mais je suppose quelles seront prsentes dans la nouvelle dition de ton ouvrage.


Pour ne pas alourdir, pour nous faciliter la lecture et viter que lon se pose plein de questions, dans le MCD prfrer nommer les attributs de manire naturelle et simple plutt que technique et rbarbative. Par exemple, je ne sais pas ce que veut dire EMP_NNI_DN, mais  supposer quil sagisse du nom du dpartement, rien nempche quon nomme cet attribut Dpartement dans le MCD et EMP_NNI_DN dans le MLD ainsi que dans le code SQL. A titre indicatif, Looping permet trs simplement cela au stade MCD : 



Redondances :   

Prenons par exemple le cas de lentit-type (classe dentit) Service : on apprend que SRV_ID est identifiant, mais on lapprend aussi de manire redondante : PK_SRV est certes cl primaire, mais inutile de le faire figurer dans le MCD, le MLD est l pour a. Mme chose pour les identifiants alternatifs (cl UK_SRV_CODE).

Pour ma part, jai laiss tomber PowerAMC et les autres, et suis pass  Looping, gratuit, trs convivial, et en plus, on peut dbattre avec son trs sympathique papa, Paprick, ce que japprcie beaucoup. 

Exemple dbauche de ma part avec Looping :



Et bon rveillon !  ::chin::

----------


## fsmrel

Fred,

Suite  ce que jai crit, jai repris ton ouvrage, SQL Server 2014, soigneusement rang dans ma bibliothque et jai relu quelques pages choisies. Je me rends compte que nous ne nadoptons ni ne recommandons les mmes conventions de nommage, mais peu importe, autant de concepteurs, autant de recommandations. Notre but est quand mme bien que nous ninduisions pas les utilisateurs en erreur et que leurs bases de donnes soient valides.  ::P: 

Encore bon rveillon,

Franois

----------


## Paprick

Bonjour, et tous mes vux pour cette nouvelle anne !  ::): 

Sans surprise, j'irai dans le sens de Franois ! Et pas seulement parce que ses prconisations sont excellentes en terme de logiciel de modlisation  ::mouarf::  ::mouarf::  !
En effet, je pense qu'au niveau MCD, le modle doit tre aisment lisible, y compris par des non-spcialistes des BD.
Le modle tel que tu le proposes est parfait au niveau MLD, mais mriterait d'tre plus parlant au niveau conceptuel.
Pour cela, distinguer les noms conceptuels et les noms logiques, tel que propos par Franois, me parait tre le bon chemin  suivre.

Il est vrai que Power-AMC est une rfrence incontournable mais, au niveau MCD, je lui prfre largement des outils tels que *Win'Design*... ou _Looping_  :;):  (dont je ne me permettrais pas de vanter les qualits  ::oops::  !), en particulier par leur capacit  reprsenter les CIF et autres contraintes inter-associations.

----------


## SQLpro

Oh les enfants.... bonne anne !

NNI : Numro National d'Identit

Le schma 01 (non prsent) montre une entit Personne dont les hritiers sont : "personne morale", "personne physique".

Au niveau des rgles de gestion, que du trivial sur cette partie...

Un employ est affect successivement  diffrents postes, voir au mme poste avec des conditions diffrentes
Je m'aperoit, d'ailleurs qu'il manque la salaire de rfrence au niveau de l'entit "poste". L'attribut base salaire an" ne devrait pas figurer au niveau du contrat

Au niveau des permis, certains permis (poids lourd, car...) ncessite des validations rgulires

Donc rien de bien folichon....

Au niveau de l'outil de modlisation... WinDesign, gnial, mais trop de bugs... j'avais crit  Dominique Nancy.... mais bon... j'ai perdu plusieurs fois mon travail alors poubelle.

Sans vouloir te vexer Paprick, il manque encore beaucoup de choses  Looping pour avoir des fonctionnalits quivalente  Power Designer... Ne serait ce que la validation des modles (vrification de cycles par exemple) ou la cration automatique des dclencheurs d'exclusion pour les hritages...

A +

----------


## Paprick

Bonsoir,



> Sans vouloir te vexer Paprick, il manque encore beaucoup de choses  Looping pour avoir des fonctionnalits quivalente  Power Designer... Ne serait ce que la validation des modles (vrification de cycles par exemple) ou la cration automatique des dclencheurs d'exclusion pour les hritages...


Rassure-toi, a ne me vexe pas du tout ! D'autant plus que ces manques sont, pour certains, des choix assums : par exemple, les dclencheurs d'exclusion, tout comme la gestion des contraintes d'inclusion si chre  notre ami Franois  :;): , ainsi que toutes les contraintes inter-associations, sont toutes proposes graphiquement au niveau reprsentation conceptuelle (contrairement d'ailleurs  Power Designer, ce que je ne comprends d'ailleurs pas vu la qualit et l'exprience du produit...), mais, c'est vrai, pas au niveau de la gnration DDL. J'ai pour le moment jug (peut-tre  tord, je l'admets) que la gnration du code correspondant dpendait trs souvent du SGBD vis, et surtout d'une certaine vision du DBA : c'est pourquoi _Looping_ se contente de proposer une zone spcifique de saisie libre de code SQL pour rgler ces contraintes (y compris pour les dclencheurs d'exclusion pour les hritages : d'ailleurs, si tu as une dmarche formelle de gnration standard SQL pour traiter ces contraintes, je suis preneur !).
Par ailleurs, je reconnais ne pas bien maitriser Power Designer, mais je n'ai pas trouv comment grer graphiquement les CIF... Certes on peut grer les contraintes correspondantes de manire  obtenir le bon MLD, mais je n'ai rien trouv pour avoir la reprsentation graphique qui va avec, ce qui est pour moi un vrai problme si l'on souhaite que le MCD exprime correctement le SI. Peux-tu clairer ma lanterne sur ce point, ainsi que sur les reprsentations graphiques des autres contraintes, y compris les exclusions inter-associations hors hritage ?
Merci !

----------


## Paprick

Autre question : qu'entends-tu pas "_vrification de cycles_"  ::koi::  ?

----------


## SQLpro

cycle : 
facture avec ref  client et client avec ref  facture.... Mais cela peut tre beaucoup plus long... du genre client --> commande --> bon de livraison --> facture --> --> paiement --> client...
(appeles circularit dans Power Designer)

----------


## SQLpro

> Bonsoir,
> 
> Rassure-toi, a ne me vexe pas du tout ! D'autant plus que ces manques sont, pour certains, des choix assums : par exemple, les dclencheurs d'exclusion, tout comme la gestion des contraintes d'inclusion si chre  notre ami Franois , ainsi que toutes les contraintes inter-associations, sont toutes proposes graphiquement au niveau reprsentation conceptuelle (contrairement d'ailleurs  Power Designer, ce que je ne comprends d'ailleurs pas vu la qualit et l'exprience du produit...)


tu peux les mettre aussi, mais c'est juste graphique... icne "lien de dpendance tendu"




> , mais, c'est vrai, pas au niveau de la gnration DDL. J'ai pour le moment jug (peut-tre  tord, je l'admets) que la gnration du code correspondant dpendait trs souvent du SGBD vis


 oui 


> , et surtout d'une certaine vision du DBA


 bof... 


> : c'est pourquoi _Looping_ se contente de proposer une zone spcifique de saisie libre de code SQL pour rgler ces contraintes (y compris pour les dclencheurs d'exclusion pour les hritages : d'ailleurs, si tu as une dmarche formelle de gnration standard SQL pour traiter ces contraintes, je suis preneur !).
> Par ailleurs, je reconnais ne pas bien maitriser Power Designer, mais je n'ai pas trouv comment grer graphiquement les CIF... Certes on peut grer les contraintes correspondantes de manire  obtenir le bon MLD, mais je n'ai rien trouv pour avoir la reprsentation graphique qui va avec, ce qui est pour moi un vrai problme si l'on souhaite que le MCD exprime correctement le SI. Peux-tu clairer ma lanterne sur ce point, ainsi que sur les reprsentations graphiques des autres contraintes, y compris les exclusions inter-associations hors hritage ?
> Merci !


Donc lien de dpendance tendu...

A +

----------


## Paprick

> cycle : 
> facture avec ref  client et client avec ref  facture.... Mais cela peut tre beaucoup plus long... du genre client --> commande --> bon de livraison --> facture --> --> paiement --> client...
> (appeles circularit dans Power Designer)


C'est bien ce que  quoi je pensais, mais je n'tais pas sr... En fait _Looping_ le gre trs bien et signale en temps rel des "_Rfrences circulaires_" dans la partie MLD textuel (et refuse d'afficher le DDL).

----------


## Paprick

> tu peux les mettre aussi, mais c'est juste graphique... icne "lien de dpendance tendu"


Ok, je viens de voir a... par contre ce n'est vraiment que graphique, et je n'ai pas trouv comment mettre en correspondance une contrainte graphique donne avec son code...
Mais, ce que je trouve dommage, c'est la non prise en compte spcifique des CIFs dfinies graphiquement au niveau MCD avec dduction automatique des cls dans le MLD.
C'est encore plus vrai pour les CIF  unicit incomplte susceptibles de gnrer automatiquement des cls alternatives.
C'est un point sur lequel, en particulier grce  l'exigence et l'obstination de Franois, _Looping_ est devenu parfaitement incollable (surtout dans la future version 4.1  venir), contrairement  des outils qui ne proposent rien (mme Win'Design qui le traite graphiquement, ne propose pas de cls alternatives, et ne gnre pas le bon MLD ds que a se complique...).
Quoiqu'il en soit, _Looping_ n'a que 4 ans d'existence, et ne demande qu' s'amliorer  :;): .

----------


## SQLpro

> Ok, je viens de voir a... par contre ce n'est vraiment que graphique, et je n'ai pas trouv comment mettre en correspondance une contrainte graphique donne avec son code...
> Mais, ce que je trouve dommage, c'est la non prise en compte spcifique des CIFs dfinies graphiquement au niveau MCD avec dduction automatique des cls dans le MLD.
> C'est encore plus vrai pour les CIF  unicit incomplte susceptibles de gnrer automatiquement des cls alternatives.
> C'est un point sur lequel, en particulier grce  l'exigence et l'obstination de Franois, _Looping_ est devenu parfaitement incollable (surtout dans la future version 4.1  venir), contrairement  des outils qui ne proposent rien (mme Win'Design qui le traite graphiquement, ne propose pas de cls alternatives, et ne gnre pas le bon MLD ds que a se complique...).
> Quoiqu'il en soit, _Looping_ n'a que 4 ans d'existence, et ne demande qu' s'amliorer .


Pour le problme des dclencheurs, il n'existe aucun code commun entre PostGreSQL MySQL et SQL Server ni Oracle. Je peux te donner le code de triggers d'exclusion au moins pour l'hritage pour MS SQL Server et tenterais de te donner la chose pour PostGreSQL.... 

En fait c'est assez simple... En syntaxe Backus Naur :



```

```

----------


## fsmrel

Ave,   




> Pour le problme des dclencheurs, il n'existe aucun code commun entre PostGreSQL MySQL et SQL Server ni Oracle. Je peux te donner le code de triggers d'exclusion au moins pour l'hritage pour MS SQL Server et tenterais de te donner la chose pour PostGreSQL....


De mon ct, javais surtout programm des triggers dans le contexte DB2 puisque cest le SGBD que jai toujours utilis quand  jtais actif. Ces p... de triggers ne mont jamais emball, car on  y programme (on quitte le *What* pour le *How*)  en tenant compte de ce foutu *How* dans le genre : pour chaque table implique, je dois prvoir la programmation  mettre en oeuvre en fonction des oprations quelle peut subir : INSERT, UPDATE,, DELETE, et si cest  effectuer avant ou aprs lexcution de lopration. 
Personnellement, programmer ne me fait pas peur, j'ai dvelopp des grosses applications en assembleur pendant 40 ans. 
Depuis que jai des loisirs, jai dcouvert Developpez.com  et me suis mis  aider comme je le pouvais, aussi ai-je t amen, bon gr, mal gr,  proposer des triggers, et surtout, le plus souvent possible, des solutions sans triggers. Comme je me tue  le rpter, pourquoi ne pas pouvoir profiter de linstruction CREATE ASSERTION ? Les choses seraient tellement plus simples ! Chez les diteurs de SGBD et dans les colloques, les frileux et les faux-culs expliquent en long et en large que cette instruction coterait la feau des pesses, mais ce sont les mmes qui, fin des annes quatre-vingts, nous expliquaient que lintgrit rfrentielle serait pouvantable quant  la performance des requtes, donc  laisser aux dveloppeurs... Jai t un des tous premiers en France, sinon le premier  la mettre en oeuvre (en 1988), et en bon DBA je lai secoue puis mise en oeuvre  Clermont-Ferrand pour lapplication hyper sensible _Prise de commandes_, et ce fut une russite. Jaimerais tant pouvoir disposer de cette instruction CREATE ASSERTION, et montrer quun bon DBA saurait lutiliser sans provoquer de problme de performance. Mme chose pour la clause CHECK de linstruction CREATE TABLE, ne permettant que de mettre en oeuvre les contrles les plus basiques du genre  _Le salaire doit tre au moins suprieur  15000 euros_    

Si dans le CREATE TABLE je veux coder un CHECK comportant un NOT EXISTS ou quivalent, je me fais renvoyer sans douceur dans mes vingt-deux :




> Msg 1046, Niveau 15, tat 1
> Les sous-requtes ne sont pas autorises dans ce contexte. Seules sont permises les expressions scalaires.


De la tartuferie pudique, mempchant de faire du relationnel...   

Quant  viter les triggers, jai dterr une discussion (cf. le post #9 dune discussion ouverte par le Capitaine) o je le fais pour une contrainte dexclusion. Llgance du code laisse  dsirer, mais a fonctionne...

Etant donn que le MCD fourni par le Capitaine semble avoir disparu, je le fournis ici (sil veut bien safficher).

----------


## SQLpro

> Ave,   
> 
> 
> 
> De mon ct, javais surtout programm des triggers dans le contexte DB2 puisque cest le SGBD que jai toujours utilis quand  jtais actif. Ces p... de triggers ne mont jamais emball, car on  y programme (on quitte le *What* pour le *How*)  en tenant compte de ce foutu *How* dans le genre : pour chaque table implique, je dois prvoir la programmation  mettre en oeuvre en fonction des oprations quelle peut subir : INSERT, UPDATE,, DELETE, et si cest  effectuer avant ou aprs lexcution de lopration. 
> Personnellement, programmer ne me fait pas peur, j'ai dvelopp des grosses applications en assembleur pendant 40 ans. 
> Depuis que jai des loisirs, jai dcouvert Developpez.com  et me suis mis  aider comme je le pouvais, aussi ai-je t amen, bon gr, mal gr,  proposer des triggers, et surtout, le plus souvent possible, des solutions sans triggers. Comme je me tue  le rpter, pourquoi ne pas pouvoir profiter de linstruction CREATE ASSERTION ? Les choses seraient tellement plus simples ! Chez les diteurs de SGBD et dans les colloques, les frileux et les faux-culs expliquent en long et en large que cette instruction coterait la feau des pesses, mais ce sont les mmes qui, fin des annes quatre-vingts, nous expliquaient que lintgrit rfrentielle serait pouvantable quant  la performance des requtes, donc  laisser aux dveloppeurs... Jai t un des tous premiers en France, sinon le premier  la mettre en oeuvre (en 1988), et en bon DBA je lai secoue puis mise en oeuvre  Clermont-Ferrand pour lapplication hyper sensible _Prise de commandes_, et ce fut une russite.


pour info le seul SGBDR, qui,  ma connaissance implmentait les assertions tait RDB de Digital.

Si les assertions sont intellectuellement trs satisfaisante elles posent d'normes problmes de performances....

Voici ce que je dis dans mon nouvel ouvrage   ce sujet :

"
*3.5 Les assertions* 
Les assertions sont des contraintes dont l'tendue porte sur la base entire notamment pour permettre des rgles de validation entre diffrentes colonnes de diffrentes tables ou vues  l'aide de prdicats. Les assertions au sens de la norme SQL sont donc des objets de la base de donnes.
Pour crer une assertion, il faut utiliser la commande CREATE ASSERTION et utiliser une contrainte de validation CHECK.

La syntaxe de cration d'une assertion est la suivante : 


```

```

Les rgles de dferrabilit, introduites par la clause <attribut_assertion> seront discutes au paragraphe suivant.

Nous prendrons comme exemple une unicit de cl devant porter sur deux tables distinctes, ce qui est le cas dans tous les hritages  exclusif  :


```

```

Dans ce type de modlisation, les personnes morales et physiques hritent des caractristiques dune personne gnrique. Au niveau infrieur, il faut dissocier les PRS_ID en deux groupes, les valeurs affectes aux personnes physiques ne devant en aucun cas se retrouver dans la table des personnes morales et vice-versa.

Dans un tel cas on recoure  une assertion comme celle-ci :
*Exemple 3.28**  Assertion dexclusion pour le cas dun hritage mutuellement exclusif


```

```

La sous requte SELECT de la clause CHECK qui forme le prdicat de l'assertion, met en correspondance les tables S_PRS.T_PERSONNE_PHYSIQUE_PSP et S_PRS.T_PERSONNE_MORALE_PSM en faisant lintersection des ensembles forme de la cl de chacune des tables. Dans le cas prsent, afin d'assurer l'unicit de la cl  travers les deux tables, il ne faut pas qu'une personne physique porte le mme numro de cl qu'une personne morale. En aucun cas, la requte de doit retourne un rsultat. Cela est assur  l'aide de l'expression EXISTS qui renvoit vrai au cas o un rsultat est retourn et faux dans le cas o la requte ne retourne aucune ligne.

L'assertion est vrifie chaque fois que lun des deux tables fait lobjet dune mise  jour (INSERT, UPDATE, DELETE) et la contrainte valide la commande si le prdicat CHECK vaut vrai, donc si la requte d'extraction ne produit jamais aucun rsultat. Dans le cas contraire le viol de la contrainte intervient et l'ordre SQL d'insertion ou de modification est empch qu'il porte sur l'une ou l'autre table. 
Dans le cas de lexemple 3.29, toute suppression de ligne dune des deux tables filles ne violera jamais cette contrainte, mais par sa nature, lassertion impose que cette vrification soit faite mme en cas de suppression, ce qui est un travail inutile

Une contrainte de table ne suffit pas  exprimer une telle rgle de validation. Seul l'usage de l'assertion (contrainte propre  la base) le permet.

* 	NOTE*
	Compte tenu de la complexit de mise en uvre de la vrification des assertions et de leur cot exorbitant, la plupart des diteurs de SGBD relationnel ont prfr ne pas implmenter  la lettre ce genre de contraintes, mais de leur substituer la notion de dclencheur (trigger) que nous verrons au chapitre 7 
"

Dans l'exemple cit il y a plusieurs problmatiques :
1) inutile de vrifier l'assertion pour le DELETE
2) inutile de vrifier l'assertion pour toutes les lignes de deux tables (INSERT, UPDATE)
3) inutile de vrifier l'assertion si la cl n'est pas modifie (UPDATE)

C'est pourquoi les diteurs de SGBDR ont renonc  cela... Comme vles vues "misajourabl" en thorie de Codd....




> Jaimerais tant pouvoir disposer de cette instruction CREATE ASSERTION, et montrer quun bon DBA saurait lutiliser sans provoquer de problme de performance. Mme chose pour la clause CHECK de linstruction CREATE TABLE, ne permettant que de mettre en oeuvre les contrles les plus basiques du genre  _Le salaire doit tre au moins suprieur  15000 euros_    
> 
> Si dans le CREATE TABLE je veux coder un CHECK comportant un NOT EXISTS ou quivalent, je me fais renvoyer sans douceur dans mes vingt-deux :
> 
> 
> De la tartuferie pudique, mempchant de faire du relationnel...


Je serais trs curieux de voir ton code car les dclencheurs SQL Sever sont purement ensemblistes... AMHA tu dois le coder mal !





> Quant  viter les triggers, jai dterr une discussion (cf. le post #9 dune discussion ouverte par le Capitaine) o je le fais pour une contrainte dexclusion. Llgance du code laisse  dsirer, mais a fonctionne...
> 
> Etant donn que le MCD fourni par le Capitaine semble avoir disparu, je le fournis ici (sil veut bien safficher).


Sauf que les contraintes d'exclusion a n'existe pas en SQL...

Et pour ce qui concerne les contraintes de tables qui scrute d'autres lignes ou d'autre table, mme punition !

A +

----------


## escartefigue

Concernant ce point particulier



> Etant donn que le MCD fourni par le Capitaine semble avoir disparu, je le fournis ici (sil veut bien safficher).


J'ai fait du mnage il y a quelques mois dans mes pices jointes, pensant bien faire ( la suite de messages m'indiquant que j'en avais un trop grand nombre).
Mal m'en a pris ! J'ai dcouvert  mes dpens que ces PJ taient ce faisant supprimes des messages y faisant rfrence (et donc une grande partie de mes vieilles rponses). Je croyais qu'elles y taient dupliques, il n'en est rien.
Si j'arrive  remettre la main sur la clef USB contenant une grande partie des MCD des sujets de "developpez.net" je pourrai arranger a, au moins en partie  :;): , cette clef est trop bien range quelque part, l, dans mon mЦ

----------


## fsmrel

Salve,




> pour info le seul SGBDR, qui,  ma connaissance implmentait les assertions tait RDB de Digital.


Que devient RDB ?




> Je serais trs curieux de voir ton code car les dclencheurs SQL Sever sont purement ensemblistes... AMHA tu dois le coder mal


Je sais  quand mme coder un dclencheur, jen ai bien sr cod un paquet, ne serait-ce que pour aider les dveloppeurs chez DVP.   
Par curiosit, jai voulu voir la raction de SQL Server en lui proposant une requte desprit ensembliste et  videmment il ma renvoy dans mes vingt-deux :



```

```

Je tente une infraction :



```
INSERT INTO CONDUIRE  VALUES (2, 4) ;
```

=> 


> Msg 1046, Niveau 15, tat 1
> Les sous-requtes ne sont pas autorises dans ce contexte. Seules sont permises les expressions scalaires.


Cest quand mme trs rducteur ! Techniquement, quest-ce qui empche SQL Server de traiter une telle contrainte (de nature ensembliste) sans que la performance en souffre ?  Dans le cas dINSERT/UPDATE, il y a les bons index, dans le cas de DELETE, le SGBD doit tre capable de comprendre que la contrainte na pas besoin dtre vrifie.

Cela dit, au moins pour les contraintes de partitionnement, (par exemple personnes physiques vs personnes morales), contraint (sic) et forc, je continuerai  utiliser des triggers, bon gr, mal gr...

En passant, dans ton assertion, tu fais mention de lattribut PRS_ID, absent dans les CREATE TABLE. Pardonne-moi, jai relev quelques fautes dorthographe, mais je suppose que tu auras des relecteurs.

----------


## escartefigue

bonjour,

pour en revenir au sujet de base, j'ai quelques remarques :

Les salaires sont lis au poste, mais pas  l'employ, tous les employs d'un mme poste touchent donc le mme salaire ?
a semble trs restrictif, comment gre-t-on en ce cas les temps partiels, l'anciennet, les primes...

Le poste associ  un et un seul employ ne permet pas de grer les quipes 2/8, 3/8 o plusieurs employs se relayent  un mme poste.
 adapter dans certains contextes.

Le modle ne permet pas de connatre l'historique d'affectation des employs aux postes, alors qu'une asso ternaire employ/poste/date le permettrait.

Concernant la validation des permis, il serait bnfique de l'identifier relativement au permis (prsence de parenthses autour des cardinalits pour power-AMC) : avec un index cluster sur identifiant permis + chrono validation, on aura des perfs optimales  :;): 

@Franois : j'ai rtabli le MCD dans la rponse du fil de discussion incrimin, il me reste beaucoup de travail pour faire de mme dans les autres rponses de ce fil et dans les autres sujets. Je doute d'avoir le courage de le faire...

----------


## escartefigue

Quelques points supplmentaires

Associer le poste  la personne morale caractrise par un SIRET est parfois imprcis : le SIRET, c'est l'tablissement, or, dans l'industrie, certains tablissements couvrent plusieurs hectares (ex : le site Peugeot Sochaux  la belle poque). Il est probable que le gestionnaire souhaitera plus prcisment savoir que le poste est localis dans tel btiment, telle aile, peut-tre mme telle trave.

Il me semble que dduire des informations unitaires  partir du NNI (code sexe, anne et mois de naissance...) n'est pas autoris par la CNIL, mais je n'ai pas retrouv les textes le mentionnant.  vrifier.
De plus, il existe quelques cas, trs marginaux, de changements de sexe (transsexuels ayant chang de civilit). Or, le NNI n'est que trs rarement modifi dans ce cas prcis.

----------


## SQLpro

> ...
> 
> 
> 
> ```
> 
> ```


C'est a qui merde... Pas ton INSERT !

Double clique sur le message d'erreur !

Donc  faire en dclencheur...

A +

----------


## SQLpro

> Quelques points supplmentaires
> 
> Associer le poste  la personne morale caractrise par un SIRET est parfois imprcis : le SIRET, c'est l'tablissement, or, dans l'industrie, certains tablissements couvrent plusieurs hectares (ex : le site Peugeot Sochaux  la belle poque). Il est probable que le gestionnaire souhaitera plus prcisment savoir que le poste est localis dans tel btiment, telle aile, peut-tre mme telle trave.


Regarde les cardinalit. Un poste est affrent  une combinaison personne / fonction / ...





> Il me semble que dduire des informations unitaires  partir du NNI (code sexe, anne et mois de naissance...) n'est pas autoris par la CNIL, mais je n'ai pas retrouv les textes le mentionnant.  vrifier.
> De plus, il existe quelques cas, trs marginaux, de changements de sexe (transsexuels ayant chang de civilit). Or, le NNI n'est que trs rarement modifi dans ce cas prcis.


Non, pas du tout interdit. 

A +

----------


## escartefigue

> Regarde les cardinalit. Un poste est affrent  une combinaison personne / fonction / ...


Ce qui ne change rien  ma remarque, la cardinalit maximale de 1 de poste vers employ ncessite de crer autant de fois le poste qu'il y a d'employs affects  ce poste.
 mon sens plusieurs personnes peuvent tre affectes  un mme poste (ex : cas des 3/8) 
Et l'association entre le poste et la personne morale (caractrise par un SIRET) rend trs imprcise la localisation de ce poste sur certains sites industriels.

----------


## fsmrel

Bonsoir,




> C'est a qui merde... Pas ton INSERT !
> Double clique sur le message d'erreur !


Il est vident que je lavais fait, vois le post #16 ! Javais eu droit de la part de SQL Server   un message :

_ Msg 1046, Niveau 15, tat 1
Les sous-requtes ne sont pas autorises dans ce contexte. Seules sont permises les expressions scalaires._
En passant, il ne sagissait pas dun INSERT, mais dun ALTER TABLE ADD CONSTRAINT.

Peu importe, mais je concluais en disant que SQL Server pouvait quand mme mieux faire, vu la simplicit de la contrainte...

----------

