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 :

Inventaire livres bibliothèque personnelle


Sujet :

Schéma

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

    Citation Envoyé par almoa
    Supposons par exemple que j’enregistre dans mon application une édition originale (e1) d’une œuvre française en grand format (GF). J’enregistre ses caractéristiques propres. Potentiellement une édition étrangère (e2) de cette œuvre (traduite du français vers une autre langue) peut exister (GF ou poche). De même potentiellement il peut exister une édition française de la même œuvre en poche (e3) ou alors en GF (e4) mais d’un autre éditeur. Il est alors important de distinguer deux cas de figure :

    a) Je possède une édition liée (e2 ou e3 ou e4) à e1 (1 % des cas) : cette édition doit être enregistrée avec toutes ses caractéristiques propres (titre, éditeur, année parution, contributeur…), comme c’est le cas de toutes les éditions possédées. A l’affichage dans l’application, il devra m’être signalé qu’il existe une édition liée possédée que je peux afficher à son tour.

    b) Je ne possède pas l’édition liée (e2 ou e3 ou e4) à e1 (99 % des cas) : lors de l’enregistrement de l’édition que je possède, il s’agit seulement de faire référence à l’édition liée (e2 ou e3 ou e4) en notant son titre (si différent : titre VO), éditeur et année de parution. Je trouve ces références dans l’édition possédée généralement dans la page mentionnant le copyright. A l’affichage de l’édition possédée, il sera fait mention desdites références.
    Cas (a) il faudrait donc créer e2, e3, e4 en tant qu’éditions non possédées et établir un lien entre e1 et ces éditions ;

    Cas (b) il faut donc créer e2, e3, e4 en tant qu’éditions possédées et établir un lien entre e1 et ces éditions.

    Ci-joint une vue d’une partie d’un MCD en cours d’élaboration. A vous de préciser ce qui ne va pas...

    (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. #62
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 393
    Points : 214
    Points
    214
    Par défaut
    Bonjour fsmrel,

    J'ai essayé de construire dans Looping la partie du MCD proposé. Le MLD généré est le suivant :

    Nom : 2024-12-21 15_23_03-Looping - [Biblio-Dec-2024.loo].png
Affichages : 25
Taille : 42,0 Ko

    et le script SQL est le suivant :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    CREATE TABLE Ouvrage(
       OuvrageId SERIAL,
       OuvrageTitre VARCHAR(100)  NOT NULL,
       PRIMARY KEY(OuvrageId)
    );
     
    CREATE TABLE Editeur(
       EditeurId SERIAL,
       EditeurNom VARCHAR(100) ,
       PRIMARY KEY(EditeurId)
    );
     
    CREATE TABLE EditionType(
       EditionTypeId SERIAL,
       EditionTypeLibelle VARCHAR(100) ,
       PRIMARY KEY(EditionTypeId)
    );
     
    CREATE TABLE Format(
       FormatId SERIAL,
       FormatLibelle VARCHAR(100) ,
       PRIMARY KEY(FormatId)
    );
     
    CREATE TABLE Contributeur(
       ContributeurId SERIAL,
       ContributeurNom VARCHAR(100) ,
       PRIMARY KEY(ContributeurId)
    );
     
    CREATE TABLE ContributionType(
       ContributionTypeId SERIAL,
       ContributionTypeLibelle VARCHAR(100) ,
       PRIMARY KEY(ContributionTypeId)
    );
     
    CREATE TABLE Edition(
       OuvrageId INTEGER,
       EditionNumero SERIAL,
       AnneParution DATE,
       EditeurId INTEGER NOT NULL,
       PRIMARY KEY(OuvrageId, EditionNumero),
       FOREIGN KEY(OuvrageId) REFERENCES Ouvrage(OuvrageId),
       FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId)
    );
     
    CREATE TABLE EditionNonPossedee(
       Id_EditionNonPossedee SERIAL,
       OuvrageId INTEGER NOT NULL,
       EditionNumero INTEGER NOT NULL,
       PRIMARY KEY(Id_EditionNonPossedee),
       UNIQUE(EditionNumero),
       FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE EditionPossedee(
       Id_EditionPossedee SERIAL,
       ISBN13 VARCHAR(13) ,
       EditionDateAchat DATE,
       FormatId INTEGER NOT NULL,
       OuvrageId INTEGER NOT NULL,
       EditionNumero INTEGER NOT NULL,
       PRIMARY KEY(Id_EditionPossedee),
       UNIQUE(EditionNumero),
       FOREIGN KEY(FormatId) REFERENCES Format(FormatId),
       FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE EdiEnfantFrancais(
       Id_EdiEnfantFrancais SERIAL,
       Id_EditionPossedee_SourceGrandFormatFrançais INTEGER NOT NULL,
       Id_EditionPossedee_EnfantDeParentFrançais INTEGER NOT NULL,
       PRIMARY KEY(Id_EdiEnfantFrancais),
       UNIQUE(Id_EditionPossedee_SourceGrandFormatFrançais),
       UNIQUE(Id_EditionPossedee_EnfantDeParentFrançais),
       FOREIGN KEY(Id_EditionPossedee_SourceGrandFormatFrançais) REFERENCES EditionPossedee(Id_EditionPossedee),
       FOREIGN KEY(Id_EditionPossedee_EnfantDeParentFrançais) REFERENCES EditionPossedee(Id_EditionPossedee)
    );
     
    CREATE TABLE EdiEnfantDeParentEtranger(
       Id_EdiEnfantDeParentEtranger SERIAL,
       Id_EditionPossedee_EnfantDeParentPasEnFrançais INTEGER NOT NULL,
       PRIMARY KEY(Id_EdiEnfantDeParentEtranger),
       UNIQUE(Id_EditionPossedee_EnfantDeParentPasEnFrançais),
       FOREIGN KEY(Id_EditionPossedee_EnfantDeParentPasEnFrançais) REFERENCES EditionPossedee(Id_EditionPossedee)
    );
     
    CREATE TABLE Referencer(
       Id_EditionPossedee INTEGER,
       Id_EditionNonPossedee INTEGER,
       PRIMARY KEY(Id_EditionPossedee, Id_EditionNonPossedee),
       FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
       FOREIGN KEY(Id_EditionNonPossedee) REFERENCES EditionNonPossedee(Id_EditionNonPossedee)
    );
     
    CREATE TABLE Edi_Type(
       Id_EditionPossedee INTEGER,
       EditeurId INTEGER,
       EditionTypeId INTEGER,
       AnneeParution DATE,
       PRIMARY KEY(Id_EditionPossedee, EditeurId, EditionTypeId),
       FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
       FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId),
       FOREIGN KEY(EditionTypeId) REFERENCES EditionType(EditionTypeId)
    );
     
    CREATE TABLE Edi_Con(
       Id_EditionPossedee INTEGER,
       ContributeurId INTEGER,
       ContributionTypeId INTEGER,
       PRIMARY KEY(Id_EditionPossedee, ContributeurId, ContributionTypeId),
       FOREIGN KEY(Id_EditionPossedee) REFERENCES EditionPossedee(Id_EditionPossedee),
       FOREIGN KEY(ContributeurId) REFERENCES Contributeur(ContributeurId),
       FOREIGN KEY(ContributionTypeId) REFERENCES ContributionType(ContributionTypeId)
    );

    J'ai peut-être fait des erreurs dans la transcription du MCD :

    - La contrainte d'unicité porte sur "EditionNumero". Ne devrait-elle pas plutôt porter sur le couple (OuvrageId, EditionNumero) qui est déjà la clé primaire de la table [Edition] ?

    - J'ai du mal à comprendre la conception des tables [EdiEnfantFrancais] et [EdiEnfantDeParentEtranger]. Je voyais plus une colonne "Id_EditionPossedee_Parent" dans la table EditionPossedee (mais problème elle pourrait être NULL...)

    - La présence de "AnneeParution" dans la table [Edi_Type] ne serait-elle pas redondante car déjà présente dans la table [Edition] ?

    Par ailleurs, je ne suis pas sûr de saisir ce que recoupe la notion de "types d'édition" dans la table [EditionType].

    Merci par avance de votre éclairage.

  3. #63
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 128
    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 128
    Points : 31 677
    Points
    31 677
    Billets dans le blog
    16
    Par défaut
    Bonjour almoha,

    Votre MLD diffère quelque peu du mien, lequel est le suivant, obtenu à partir de mon dernier MCD :  
     
     
    Au stade MCD, Les entités-types EditionPossedee et EditionNonPossedee sont des spécialisations de l’entité-type Edition, en conséquence de quoi elles héritent de l’identifiant de celle-ci {OuvrageId, EditionNumero}.
     
    Ceci vaut au stade du MLD : les tables EditionPossedee et EditionNonPossedee ont pour clé primaire la paire {OuvrageId, EditionNumero}, qui est aussi clé étrangère en relation avec la table Edition.  
     
    Les attributs Id_EditionPossedee et Id_EditionNonPossedee que vous utilisez pour les tables EditionPossedee et EditionNonPossedee n’ont pas lieu d’être et doivent disparaître. En créant votre propre MCD, vous avez sans doute pensé généralisation et non pas spécialisation : il serait opportun que vous le présentiez.
     
    Le code SQL issu de mon MLD :
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    CREATE TABLE Editeur(
       EditeurId SMALLINT,
       EditeurNom SMALLINT NOT NULL,
       CONSTRAINT Editeur_PK PRIMARY KEY(EditeurId),
       CONSTRAINT Editeur_AK UNIQUE(EditeurNom)
    );
     
    CREATE TABLE Format(
       FormatId SMALLINT,
       FormatLibelle VARCHAR(50) NOT NULL,
       CONSTRAINT Format_PK PRIMARY KEY(FormatId),
       CONSTRAINT Format_AK UNIQUE(FormatLibelle)
    );
     
    CREATE TABLE Contributeur(
       ContributeurId SMALLINT,
       ContributeurNom VARCHAR(50) NOT NULL,
       CONSTRAINT Contributeur_PK PRIMARY KEY(ContributeurId),
       CONSTRAINT Contributeur_AK UNIQUE(ContributeurNom)
    );
     
    CREATE TABLE EditionType(
       EditionTypeId SMALLINT,
       EditionTypeLibelle VARCHAR(50) NOT NULL,
       CONSTRAINT EditionType_PK PRIMARY KEY(EditionTypeId),
       CONSTRAINT EditionType_AK UNIQUE(EditionTypeLibelle)
    );
     
    CREATE TABLE ContributionType(
       ContributionTypeId SMALLINT,
       ContributionTypeLibelle VARCHAR(50) NOT NULL,
       CONSTRAINT ContributionType_PK PRIMARY KEY(ContributionTypeId),
       CONSTRAINT ContributionType_AK UNIQUE(ContributionTypeLibelle)
    );
     
    CREATE TABLE Ouvrage(
       OuvrageId SMALLINT,
       OuvrageTitre VARCHAR(50) NOT NULL,
       CONSTRAINT Ouvrage_PK PRIMARY KEY(OuvrageId)
    );
     
    CREATE TABLE Edition(
       OuvrageId SMALLINT,
       EditionNumero INT,
       EditeurId SMALLINT NOT NULL,
       CONSTRAINT Edition_PK PRIMARY KEY(OuvrageId, EditionNumero),
       CONSTRAINT Edition_Ouvrage_FK FOREIGN KEY(OuvrageId) REFERENCES Ouvrage(OuvrageId),
       CONSTRAINT Edition_Editeur_FK FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId)
    );
     
    CREATE TABLE EditionPossedee(
       OuvrageId SMALLINT,
       EditionNumero INT,
       ISBN13 VARCHAR(13) NOT NULL,
       EditionDateAchat DATE NOT NULL,
       FormatId SMALLINT NOT NULL,
       CONSTRAINT EditionPossedee_PK PRIMARY KEY(OuvrageId, EditionNumero),
       CONSTRAINT EditionPossedee_AK UNIQUE(ISBN13),
       CONSTRAINT EditionPossedee_Edition_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero),
       CONSTRAINT EditionPossedee_Format_FK FOREIGN KEY(FormatId) REFERENCES Format(FormatId)
    );
     
    CREATE TABLE EditionNonPossedee(
       OuvrageId SMALLINT,
       EditionNumero INT,
       CONSTRAINT EditionNonPossedee_PK PRIMARY KEY(OuvrageId, EditionNumero),
       CONSTRAINT EditionNonPossedee_Edition_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE EdiEnfantDeParentEtranger(
       OuvrageId_EnfantDeParentPasEnFrançais SMALLINT,
       EditionNumero_EnfantDeParentPasEnFrançais INT,
       CONSTRAINT EdiEnfantDeParentEtranger_PK PRIMARY KEY(OuvrageId_EnfantDeParentPasEnFrançais, EditionNumero_EnfantDeParentPasEnFrançais),
       CONSTRAINT EdiEnfantDeParentEtranger_EditionPossedee_EnfantDeParentPasEnFrançais_FK FOREIGN KEY(OuvrageId_EnfantDeParentPasEnFrançais, EditionNumero_EnfantDeParentPasEnFrançais) REFERENCES EditionPossedee(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE EdiEnfantFrançais(
       OuvrageId_EnfantDeParentFrançais SMALLINT,
       EditionNumero_EnfantDeParentFrançais INT,
       OuvrageId_SourceGrandFormatFrançais SMALLINT NOT NULL,
       EditionNumero_SourceGrandFormatFrançais INT NOT NULL,
       CONSTRAINT EdiEnfantFrançais_PK PRIMARY KEY(OuvrageId_EnfantDeParentFrançais, EditionNumero_EnfantDeParentFrançais),
       CONSTRAINT EdiEnfantFrançais_AK UNIQUE(OuvrageId_SourceGrandFormatFrançais, EditionNumero_SourceGrandFormatFrançais),
       CONSTRAINT EdiEnfantFrançais_EditionPossedee_EnfantDeParentFrançais_FK FOREIGN KEY(OuvrageId_EnfantDeParentFrançais, EditionNumero_EnfantDeParentFrançais) REFERENCES EditionPossedee(OuvrageId, EditionNumero),
       CONSTRAINT EdiEnfantFrançais_EditionPossedee_SourceGrandFormatFrançais_FK FOREIGN KEY(OuvrageId_SourceGrandFormatFrançais, EditionNumero_SourceGrandFormatFrançais) REFERENCES EditionPossedee(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE Edi_Con(
       OuvrageId SMALLINT,
       EditionNumero INT,
       ContributeurId SMALLINT,
       ContributionTypeId SMALLINT,
       CONSTRAINT Edi_Con_PK PRIMARY KEY(OuvrageId, EditionNumero, ContributeurId, ContributionTypeId),
       CONSTRAINT Edi_Con_EditionPossedee_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES EditionPossedee(OuvrageId, EditionNumero),
       CONSTRAINT Edi_Con_Contributeur_FK FOREIGN KEY(ContributeurId) REFERENCES Contributeur(ContributeurId),
       CONSTRAINT Edi_Con_ContributionType_FK FOREIGN KEY(ContributionTypeId) REFERENCES ContributionType(ContributionTypeId)
    );
     
    CREATE TABLE Edi_Type(
       OuvrageId SMALLINT,
       EditionNumero INT,
       EditeurId SMALLINT,
       EditionTypeId SMALLINT,
       AnneeParution INT NOT NULL,
       CONSTRAINT Edi_Type_PK PRIMARY KEY(OuvrageId, EditionNumero, EditeurId, EditionTypeId),
       CONSTRAINT Edi_Type_EditionPossedee_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES EditionPossedee(OuvrageId, EditionNumero),
       CONSTRAINT Edi_Type_Editeur_FK FOREIGN KEY(EditeurId) REFERENCES Editeur(EditeurId),
       CONSTRAINT Edi_Type_EditionType_FK FOREIGN KEY(EditionTypeId) REFERENCES EditionType(EditionTypeId)
    );
     
    CREATE TABLE Referencer(
       OuvrageId SMALLINT,
       EditionNumero INT,
       OuvrageId_1 SMALLINT,
       EditionNumero_1 INT,
       CONSTRAINT Referencer_PK PRIMARY KEY(OuvrageId, EditionNumero, OuvrageId_1, EditionNumero_1),
       CONSTRAINT Referencer_EditionPossedee_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES EditionPossedee(OuvrageId, EditionNumero),
       CONSTRAINT Referencer_EditionNonPossedee_1_FK FOREIGN KEY(OuvrageId_1, EditionNumero_1) REFERENCES EditionNonPossedee(OuvrageId, EditionNumero)
    );
     
     
    Histoire d’éviter d’avoir des noms d’attributs à rallonge, tels que OuvrageId_EnfantDeParentFrançais, EditionNumero_EnfantDeParentFrançais, etc., une fois que vous en avez noté la sémantique vous pouvez raccourcir les suffixes, comme je l’ai fait ci-dessous (voire carrément les supprimer) :
     
     
    Code SQL correspondant :
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    CREATE TABLE EditionPossedee(
       OuvrageId SMALLINT,
       EditionNumero INT,
       ISBN13 VARCHAR(13) NOT NULL,
       EditionDateAchat DATE NOT NULL,
       FormatId SMALLINT NOT NULL,
       CONSTRAINT EditionPossedee_PK PRIMARY KEY(OuvrageId, EditionNumero),
       CONSTRAINT EditionPossedee_AK UNIQUE(ISBN13),
       CONSTRAINT EditionPossedee_Edition_FK FOREIGN KEY(OuvrageId, EditionNumero) REFERENCES Edition(OuvrageId, EditionNumero),
       CONSTRAINT EditionPossedee_Format_FK FOREIGN KEY(FormatId) REFERENCES Format(FormatId)
    );
     
    CREATE TABLE EdiEnfantFrançais(
       OuvrageId_EPF SMALLINT,
       EditionNumero_EPF INT,
       OuvrageId_SGFF SMALLINT NOT NULL,
       EditionNumero_SGFF INT NOT NULL,
       CONSTRAINT EdiEnfantFrançais_PK PRIMARY KEY(OuvrageId_EPF, EditionNumero_EPF),
       CONSTRAINT EdiEnfantFrançais_AK UNIQUE(OuvrageId_SGFF, EditionNumero_SGFF),
       CONSTRAINT EdiEnfantFrançais_EditionPossedee_EPF_FK FOREIGN KEY(OuvrageId_EPF, EditionNumero_EPF) REFERENCES EditionPossedee(OuvrageId, EditionNumero),
       CONSTRAINT EdiEnfantFrançais_EditionPossedee_SGFF_FK FOREIGN KEY(OuvrageId_SGFF, EditionNumero_SGFF) REFERENCES EditionPossedee(OuvrageId, EditionNumero)
    );
     
    CREATE TABLE EdiEnfantDeParentEtranger(
       OuvrageId_EPNF SMALLINT,
       EditionNumero_EPNF INT,
       CONSTRAINT EdiEnfantDeParentEtranger_PK PRIMARY KEY(OuvrageId_EPNF, EditionNumero_EPNF),
       CONSTRAINT EdiEnfantDeParentEtranger_EditionPossedee_EPNF_FK FOREIGN KEY(OuvrageId_EPNF, EditionNumero_EPNF) REFERENCES EditionPossedee(OuvrageId, EditionNumero)
    );
     
    Citation Envoyé par almoha
    J'ai du mal à comprendre la conception des tables [EdiEnfantFrancais] et [EdiEnfantDeParentEtranger]. Je voyais plus une colonne "Id_EditionPossedee_Parent" dans la table EditionPossedee (mais problème elle pourrait être NULL...)
     
    En fait, le MCD que j’ai proposé n’est qu’une vue d’un MCD plus vaste. Par exemple, l’entité-type EdiEnfantDeParentEtranger pourrait faire l’objet à son tour d’une spécialisation en entités-types EdiEnfantDeParentEtrangerTraduit et EdiEnfantDeParentEtrangerPasTraduit ; elle pourrait être à l’origine d’une association avec EditionPossedee (parenté pas en français) : ces possibilités sont liées aux réponses aux questions que j’ai posées.
     
    Citation Envoyé par almoha
    Je voyais plus une colonne "Id_EditionPossedee_Parent" dans la table EditionPossedee (mais problème elle pourrait être NULL...)
    Null est au Modèle Relationnel de Données (alias Théorie Relationnelle) ce qu’est Quasimodo à Phoebus (ou encore Hilarion Lefuneste à Achille Talon). Vox in deserto, je passe mon temps à alerter au sujet de ce porteur de tares, inhibiteur des optimiseurs des SGBD, semeur de m... quant à la logique classique, empêcheur de l’utilisation des lois de De Morgan, etc.
     
    Citation Envoyé par almoha
    La présence de "AnneeParution" dans la table [Edi_Type] ne serait-elle pas redondante car déjà présente dans la table [Edition] ?
    Dans votre MLD, oui, mais pas dans le mien, car dans mon MCD l’entité-type Edition est dépourvue de cet attribut.
     
    Citation Envoyé par almoha
    je ne suis pas sûr de saisir ce que recoupe la notion de "types d'édition" dans la table [EditionType]
     
    Le temps ayant passé, je ne sais plus à quelle règle de gestion cela correspond... Si j’en ai le temps, je repasserai en revue vos règles figurant dans le
    post #53. En attendant, faisons comme si cette partie n’existait pas, jusqu’à ce que le besoin s’en fasse sentir...
    (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.

Discussions similaires

  1. Mld pour inventaire livre
    Par cold-apok dans le forum Schéma
    Réponses: 1
    Dernier message: 25/09/2007, 02h42
  2. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 14h16
  3. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 16h35
  4. Réponses: 2
    Dernier message: 17/03/2002, 20h00

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