Document sous licence Creative Commons
[1h]
On souhaite créer un langage permettant de d'assembler des documents situés dans une base de données. Un document est décrit par un titre, un auteur, un nombre de pages et une licence creative commons (CC) : cc-by, cc-by-nc, cc-by-nd, cc-by-sa, cc-by-nc-nd, cc-by-nc-sa.
Un document peut être :
soit un document maître, il dispose alors toujours d'un numéro d'enregistrement unique dans la base, et son titre sera toujours renseigné ;
soit un document esclave, il est alors membre d'un document maître.
Question
Proposez en UML un type de données utilisateur, en utilisant le stéréotype <<dataType>>, afin de représenter une licence CC en utilisant trois booléens (sachant que toutes les licences intègrent nécessairement le by). Une licence cc-by aura donc trois valeurs 0.
nc | nd | sa | |
---|---|---|---|
cc-by | 0 | 0 | 0 |
cc-by-nc | 1 | 0 | 0 |
cc-by-nd | 0 | 1 | 0 |
cc-by-sa | 0 | 0 | 1 |
cc-by-nc-nd | 1 | 1 | 0 |
cc-by-nc-sa | 1 | 0 | 1 |
Proposez une modélisation UML complète du problème exploitant ce type de données.
Question
Proposez une représentation RO avec une seule table, en utilisant le modèle imbriqué (vous proposerez un modèle logique ou bien un code SQL compatible Oracle).
Insérer les données suivantes dans votre table :
Le document maître "Introduction à la blockchain" numéro 1, de 10 pages avec une licence cc-by.
Deux documents esclaves de 5 pages chacun, avec une licence cc-by-sa.
Question
Proposez une vue affichant les documents maîtres qui n'ont aucune de licence nc (ni à leur niveau, ni au niveau de leurs esclaves)
Question
Proposez une vue affichant les documents maîtres avec le nombre de pages total, sachant que ce nombre est égal à leur nombre de pages propre, plus le nombre de pages de tous leurs documents esclaves.