realbasic-nug.fr
[Top] [All Lists]

Re: Question de relations

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Question de relations
From: Michel LO <michel dot lo at albireo dot biz>
Date: Fri, 22 Dec 2006 00:06:47 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <C1B004E0 dot F6BE%serrano dot jc at elp-info dot fr> <458AF9EF dot 1070606 at free dot fr>
Ce que vous dites me semble très bizarre, parce que le problème n à n n'est pas un problème de structure de base, mais un problème de logique.

Si vous faites un champ idplan avec les id de tous les plans du produit, vous n'êtes plus dans une base normée te stable, mais vous gérez vous même, et on peut le faire alors dans n'importe quelle base. Il suffit de faire alors un select ou on passe dans l'autre sens en vérifiant qu'un idplan donné donne tous les enregistrements des produits où il y a le numéro dans le champ idplan "multiple".

Mais e n'est vraiment pas bon, en FileMaker non plus d'ailleurs, parce que en fait, on gère à la main l'ensemble de tous les plans dans un sens et dans l'autre avec des risques graves d'icompatibilité (comme par exemple de rajouter un idplan qui n'existe pas dans un produit).

Il FAUT faire un table intermédiaire pour rester dans une base normalisée, et c'est parce que File Maker ne sait pas créer une table intermédiaire du fait de ses limitations de non chainage (un lien ne se fait qu'entre deux tables) qu'il a fallu demander à l'utilisateur de le faire à la place du sgbd.

Cela dit, la table intermédiaire est vachement simple : il s'agit d'une table qui contient des enregistrements de 2 champs : idplan et idprod. Et au lieu d'avoir dans la table produit un champ qu'on doit se gérer à la main pour ajouter ou enlever des plans, on a une série de petits enregistrements où il y a ou non une relation dans un sens et dans l'autre entre le produit et le plan s'il y a un champ avec le idplan et le idprod en question.

Et ça, ce n'est pas chiant, c'est la seule façon de faire du normalisé et stable sans avoir rien à gérer à la main.



Michel Lo
BELT
45, rue Aristide Briand
92300 LEVALLOIS-PERRET


Le 21 déc. 06 à 22:17, Youri a écrit :


Salut Jean-Claude,


Damn', c'était trop beau de pouvoir espérer ;-)

C'est en effet une fonctionnalité très sympa dont il est difficile de se passer lorsqu'on y a gouté.

Merci,


A+

Youri



Jean-Claude SERRANO wrote:
Bonjour,
Contrairement à FileMaker, RealBasic est une Base de Données ne permettant
pas d'effectuer cette astuce que l'on utilise dans FileMaker et qui
permettait de faire du relationnel (n,n) sans créer de table intermédiaire. Avec Real Basic, comme avec les autres bases de données relationnelles ont
est obligé de créer une table intermédiaire :
TableProduitsPlans
IDProduit
IDPlan
Jusqu'a présent avec l'ensemble des BDD que j'ai utilisé, seul FileMaker
permettait ce type de relation sans créer de table intermédiaire.
@+
Jean-Claude
Le 20/12/06 22:37, « Youri » <lystes at free dot fr> a écrit :
Bonsoir,


Une technique courante que j'ai pris pour habitude d'utiliser dans
FileMaker lors de la création d'un "lien" de (1 à n) est de faire la
chose suivante :

TablePRODUITS
IDProduit
NomProduit
idplan


TablePLANS
IDPlan
Reference
IndicePlan

Pour 1 Produit A je peux avoir plusieurs Plans dans la TablePLANS. Je met donc les différentes IDPlan dans la rubrique TablePRODUITS.idplan en
les séparant par un retour chariot.

Quelle est la technique permettant de réaliser la même chose dans RBSQL?
Faut-il passer par une table intermédiaire?

Merci par avance,


A+

Youri




<Prev in Thread] Current Thread [Next in Thread>