HOWTO développement Sashipa

 

 Définir des colonnes de tables SQL en Sashipa.

Dans la partie environnement, vous souhaitez décrire une nouvelle colonne dans l'une de vos tables.

 

Colonnes

Voici un exemple :

  <schemaColumn name='tblXXX_NomSashipa' type='text' 
                   maxCharacters='20' notNull='no'>
    <physicalName>NomSql</physicalName>
    <singularName>NomAffichable</singularName>
    <shortName>NomAffichableCourt</shortName>
    <guiConfigSchemaColumn letterCount='20' sort='asc' />
  </schemaColumn>

Remarques :

  • Le nom sashipa de la colonne est l'identifiant qui sera utilisé dans le source du fichier Sashipa. C'est un nom interne au fichier.

  • L'élément physicalName contient le nom dans la base de données relationelle.

  • L'élément singularName contient le nom utilisé comme libellé dans les fiches et éventuellement les listes.

  • L'élément shortName est optionnel. Il permet de définir un nom qui sera utilisé dans les titres des colonnes des listForm.

  • L'élément guiConfigSchemaColumn est optionnel. On le précise pour les colonnes affichées à l'utilisateur. Il définit des paramètres par défaut des composants affichés.

Maintenant un exemple de colonne appartenant à une clef primaire :

  <schemaColumn name='tblPlusAuto_PlusAutoid' type='integer' notNull='yes' pk='yes'>
    <generatedByDbms />
    <physicalName>PlusAutoId</physicalName>
  </schemaColumn>

On remarque l'attribut pk qui indique que la colonne fait partie de la clef primaire.

L'élément generatedByDbms est optionnel. Il signifie que la valeur pour la colonne est auto-générée par le SGBD. Cet élément peut être vide comme ici, ou peut contenir une indication spécifique à l'évaluation de la dernière valeur ajoutée. Par exemple dans le cas de PostGreSQL, il peut contenir le nom de la séquence si celle-ci n'a pas un nom standard.

Si l'élément generatedByDbms n'avait pas été spécifié, sa valeur lors d'une insertion aurait soit été définie par l'utilisateur (cas d'une clef primaire affichable), soit été auto-générée par l'application (et non pas le SGBD).

Attention : l'utilisation d'une colonne 'generatedByDbms' n'est pas implémentée par Sashipa-Melba pour tous les SGBD ! Actuellement seules les applications travaillant avec des bases PostGreSQL peuvent l'utiliser. Mais vous pouvez m'aider :

  1. En trouvant la requête qui permet de récupérer la valeur ajoutée par la dernière insertion.
  2. Puis en la postant sur un nouveau sujet de discussion sur le forum.

 

Clefs étrangères

D'abord l'exemple :

  <schemaFk name='fk_tblPersonne_tblDossier' targetSchemaTable='tblDossier'
            deleteCascadeByDbms='yes'>
    <singularName>Dossier traité</singularName>
    <schemaColumnRef schemaColumn='tblPersonne_RefDossierTraiteAnnee' />
    <schemaColumnRef schemaColumn='tblPersonne_RefDossierTraiteNumero' />
  </schemaFk>

... ensuite l'explication :

L'élément singularName est optionnel. S'il n'est pas précisé ici, c'est le singularName de la table cible qui sera utilisé.

Dans cet exemple nous avons une clef étrangère complexe, composée de deux colonnes. Notez qu'il importe que l'ordre des déclarations dans la schemaFk corresponde à l'ordre de déclaration des colonnes de la clef primaire dans la schemaTable référencée.

L'attribut optionnel deleteCascadeByDbms signifie que la contrainte "DELETE CASCADE" est gérée par le SGBD. Cet attribut supprime de l'application la vérification d'intégrité avant la suppression, et lui fait nettoyer son buffer. L'application ne réalisera pas elle-même la suppression dans les tables dépendantes. Attention : la contrainte "delete cascade" n'est pas détectée par Database2Sashipa, il faut rajouter l'attribut à la main.

 

Identifiant utilisateur

L'identifiant utilisateur est l'ensemble des colonnes qui sert à identifier chaque ligne pour l'utilisateur. Techniquement, on peut implémenter ça par une contrainte UNIQUE dans le SGBD si l'on souhaite interdire les doublons. Un exemple :

  <userKey unique='yes'>
    <userKeyColumn schemaColumn='tblContactadresse_Contactadresselabel' />
    <userKeyFk schemaFk='tblContactadresse_fkTblContact' />
  </userKey>

Ici nous avons un identifiant utilisateur composé techniquement d'une colonne affichable et une clef étrangère. Du point de vue de l'utilisateur, la clef est composée de la colonne de libellé associée à la userKey de la table Contact, pointée par la clef étrangère.

L'attribut unique signifie que l'application générée vérifiera la non-redondance par une requête Select avant chaque insert et update. Elle génèrera un message d'erreur compréhensible.

L'attribut visible signifie que l'information contenue dans cette colonne n'a pas à être montrée.

 

© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement.