Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Quelle est la différence entre un livre et une cassette pour ce qui est des attributs ?
Une autre solution est d'avoir une table "Item" qui stocke n'importe quel item pouvant être emprunté. Le lien se fait alors avec cette table. Eventuellement un type permet de savoir de quoi il s'agit et de récupérer les attributs spécifiques à un livre ou une cassette dans la table spécifique correspondante...
Cf par exemple : http://sqlpro.developpez.com/cours/modelisation/heritage/
- Patrice
"myname" a écrit dans le message de groupe de discussion : 492b1cb9$0$906$
Bonjour,
désolé d'être "hors sujet", mais je me pose une question sur mon schéma de base.
Imaginons une base de médiathèque, avec une table Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette, l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales". Et je frémis à l'idée de la tête des requêtes...
Y a-t-il une solution plus élégante ?
Merci !
myname
Quelle est la différence entre un livre et une cassette pour ce qui est des
attributs ?
Une autre solution est d'avoir une table "Item" qui stocke n'importe quel
item pouvant être emprunté. Le lien se fait alors avec cette table.
Eventuellement un type permet de savoir de quoi il s'agit et de récupérer
les attributs spécifiques à un livre ou une cassette dans la table
spécifique correspondante...
Cf par exemple :
http://sqlpro.developpez.com/cours/modelisation/heritage/
-
Patrice
"myname" <lslfkjs@sdfmsflmk.com> a écrit dans le message de groupe de
discussion : 492b1cb9$0$906$ba4acef3@news.orange.fr...
Bonjour,
désolé d'être "hors sujet", mais je me pose une question
sur mon schéma de base.
Imaginons une base de médiathèque, avec une table
Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une
table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ
clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette,
l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales".
Et je frémis à l'idée de la tête des requêtes...
Quelle est la différence entre un livre et une cassette pour ce qui est des attributs ?
Une autre solution est d'avoir une table "Item" qui stocke n'importe quel item pouvant être emprunté. Le lien se fait alors avec cette table. Eventuellement un type permet de savoir de quoi il s'agit et de récupérer les attributs spécifiques à un livre ou une cassette dans la table spécifique correspondante...
Cf par exemple : http://sqlpro.developpez.com/cours/modelisation/heritage/
- Patrice
"myname" a écrit dans le message de groupe de discussion : 492b1cb9$0$906$
Bonjour,
désolé d'être "hors sujet", mais je me pose une question sur mon schéma de base.
Imaginons une base de médiathèque, avec une table Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette, l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales". Et je frémis à l'idée de la tête des requêtes...
Y a-t-il une solution plus élégante ?
Merci !
myname
Fred BROUARD
En sus de la modélisation par héritage pensez que vous n'empruntez pas l'œuvre mais l'ouvrage. Autrement dit il faut une notion d'exemplaire. Une personne emprunte un ouvrage (ou exemplaire) qui contient une oeuvre (ou d'ailleurs plusieurs : par exemple florilège de contes).
A +
myname a écrit :
Bonjour,
désolé d'être "hors sujet", mais je me pose une question sur mon schéma de base.
Imaginons une base de médiathèque, avec une table Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette, l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales". Et je frémis à l'idée de la tête des requêtes...
Y a-t-il une solution plus élégante ?
Merci !
myname
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************
En sus de la modélisation par héritage pensez que vous n'empruntez pas
l'œuvre mais l'ouvrage. Autrement dit il faut une notion d'exemplaire.
Une personne emprunte un ouvrage (ou exemplaire) qui contient une oeuvre
(ou d'ailleurs plusieurs : par exemple florilège de contes).
A +
myname a écrit :
Bonjour,
désolé d'être "hors sujet", mais je me pose une question
sur mon schéma de base.
Imaginons une base de médiathèque, avec une table
Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une
table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ
clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette,
l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales".
Et je frémis à l'idée de la tête des requêtes...
Y a-t-il une solution plus élégante ?
Merci !
myname
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
En sus de la modélisation par héritage pensez que vous n'empruntez pas l'œuvre mais l'ouvrage. Autrement dit il faut une notion d'exemplaire. Une personne emprunte un ouvrage (ou exemplaire) qui contient une oeuvre (ou d'ailleurs plusieurs : par exemple florilège de contes).
A +
myname a écrit :
Bonjour,
désolé d'être "hors sujet", mais je me pose une question sur mon schéma de base.
Imaginons une base de médiathèque, avec une table Livre et une table Cassette.
Pour chaque emprunt d'un élément, je remplis une table Emprunt (pointant vers Membre, etc...)
Mais comment relier un Emprunt à un Livre *ou* une Cassette ?
Je vois deux solutions:
1) ajouter à Emprunt un champ "Type" (Livre/Cassette) puis un champ clé externe pointant vers une des deux tables selon le cas.
2) créer dans Emprunt un champ pour Livre *et* un champ pour Cassette, l'un des deux étant toujours "null".
Je trouve ces deux méthodes très moches, et pas très "formes normales". Et je frémis à l'idée de la tête des requêtes...
Y a-t-il une solution plus élégante ?
Merci !
myname
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation *********************** http://www.sqlspot.com *************************