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

Schéma Discussion :

Héritage table Période [MLD]


Sujet :

Schéma

  1. #21
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,



    Citation Envoyé par SQLpro Voir le message
    Une remarque d'intérêt général...

    ON NE MODÉLISE PAS UNE PÉRIODE AVEC DEUX DATES... On modélise une période avec une date de début et une durée en unité de temps.
    Dans l’état de nos SGBD SQL, on ne peut pas te donner tort, mais si l’on se cale sur le modèle relationnel de données, on devrait plutôt modéliser un intervalle de dates !

    Ainsi, dans le cadre du modèle relationnel de données, pour historiser les statuts des clients, je n’écris ni :

    VAR Client_historique BASE RELATION
        {
         Client_id    INT,
         Statut       INT,
         Date_debut   DATE,
         Date_fin     DATE
        }
      KEY {Client_id, Date_debut} ;
    Ni :

    VAR Client_historique BASE RELATION
        {
         Client_id      INT,
         Statut         INT,
         Date_debut     DATE,
         Duree_jour     INT
        } 
      KEY {Client_id, Date_debut} ;
    Mais (signalons qu’on diminue de facto le degré de la variable d’une unité) :

    VAR Client_historique BASE RELATION
        {
         Client_id   INT,
         Statut      INT,
         Durant      INTERVAL_DATE
        }
      USING (Durant) : KEY {Client_id, Durant} ; 
    En notant que j’utilise ici une version généralisée de la clé candidate, la U_key (« using key »), qui garantit non seulement l’unicité des périodes, mais aussi leur non recouvrement (tant qu’à faire).

    Je n’ai pas à savoir si sous le capot la représentation interne (encapsulation) est faite au moyen d’une date de début et d’une date de fin, ou d’une date de début et d’une durée... J’utilise seulement les opérateurs mis à ma disposition pour le type INTERVAL_DATE (INTERVAL est un générateur de type, spécialisable par exemple en INTERVAL_MONEY, INTERVAL INTEGER, INTERVAL_TRUC, ...) Voir Typage des intervalles, opérateurs.


    Il est intéressant de constater que la norme SQL:2011 s’y colle :

    CREATE TABLE Client_historique
        (
         Client_id    INT         NOT NULL,
         Statut       INT         NOT NULL,
         Date_debut   DATE        NOT NULL,
         Date_fin     DATE        NOT NULL,
         PERIOD FOR Durant (Date_debut, Date_fin),
         UNIQUE (Client_id, Durant WITHOUT OVERLAPS)
        ) ;
    Où la clause PERIOD FOR permet de définir une période nommée Durant dans l’exemple. Durant n’est pas une colonne, mais ce nom peut être utilisé comme tel dans les requêtes (et ses composants, Date_debut et Date_fin, sont forcément du même type, soit DATE soit TIMESTAMP). La clause UNIQUE parle d’elle-même. Les opérateurs de manipulation des intervalles sont évidemment fournis.

    Je ne dispose pas du document officiel de la norme SQL, seulement de la dissertation éclairante que Chris Date, Hugh Darwen et Nikos Lorentzos lui consacrent au chapitre 19 « The SQL Standard » de leur ouvrage Time and Relational Theory, Temporal Databases in the Relational Model and SQL.

    Question : Où en est SQL Server quant à cette extension relative aux intervalles ?
    (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.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Est - ce que cela pourrait m'être utile pour représenter les ensemble de dates des périodes?

  3. #23
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Revenons à votre besoin...
    Citation Envoyé par Sharym Voir le message
    Période annuelle : - Un nom; - Une couleur; - Un booléen pour dire si elle est reproductible tous les ans (comme les jours fériés 01/05 08/05 etc); - Une liste de jour mélangeant date et énumération de jour de la semaine

    Un exemple de période annuelle : les vacances scolaire :
    "Vacances scolaire", "Bleu", Vrai, Du 01/07 au 05/09 du lundi au vendredi (approximativement)
    Il me semble que l'appellation "Vacances scolaires" est plutôt un ensemble de périodes qu'une période. Il y a en effet (en France) les vacances de la Toussaint, les vacances de Noël, les vacances d'hiver, les vacances de printemps et les grandes vacances (d'été). En plus, certaines de ces vacances ont des dates différentes selon les zones géographiques, même si j'ai lu quelque part qu'il y a un projet de supprimer ces zones.

    Période hebdomadaire : - Un nom; - Une couleur; - Une liste de jour type énumération de jour de la semaine

    Un exemple de période annuelle : les semaines :
    "Semaine", "Rouge", {Lun, Ma, Me, Je, Ve}.
    Cette période là est totalement différente de la précédente puisqu'elle contient une liste de jours de la semaine alors que la première est une série de jours calendaires.

    Bref, votre besoin n'est pas clair et il est bien difficile de vous aider efficacement.

    Au message #8, je vous ai donné une méthode (règle de gestion => MCD => tables) et un exemple concernant la modélisation d'une période telle que des jours fériés qui sont un ensemble de jours non consécutifs.

    Au message #20, SQLPro vous a donné un autre principe qui est d'enregistrer une période jours consécutifs non pas avec une date de début et de fin mais avec une date de début et une durée. Ceci serait valable par exemple pour une période telle qu'un inventaire prévu pour durer 3 jours ou la fermeture annuelle du magasin prévue pour durer 28 jours (4 semaines).

    À vous d'en faire votre profit mais ayez bien conscience que la modélisation des données est une étape très importante, avant de vous lancer dans le code de votre application qui va utiliser la BDD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Le nom de ma période est faux en effet, ce serait plutôt "Vacances d'été" , mais sur le principe mon besoin est bien claire. J'ai besoin d'un type période annuelle avec un ensemble de dates précises calendaires, et un type période hebdo avec une liste de jours de la semaine, pour simplifier une liste de VARCHAR (remplis par des valeurs d'une énum).
    J'ai bien compris votre méthode et exemple mais je ne comprends pas comment l'appliquer à ma période hebdomadaire ? et si je dois ajouter une entrée dans la table "jour" pour chaque jour de ma période annuelle cela ne va pas faire trop de données ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/05/2008, 11h26
  2. Réponses: 2
    Dernier message: 10/07/2007, 10h04
  3. Héritage avec tables liées à une autre base
    Par b_steph_2 dans le forum Access
    Réponses: 13
    Dernier message: 27/02/2007, 11h17
  4. pb de spécialisation table (héritage ou autre)
    Par fanette dans le forum Schéma
    Réponses: 3
    Dernier message: 13/11/2006, 23h32
  5. Héritage => table sans attribut !?
    Par GnouDream dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/07/2006, 15h25

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