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 18:24:12 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <C1B15486 dot F70F%serrano dot jc at elp-info dot fr>
Je n'ai pas compris ce que vous voulez dire par "faire une boucle".

Il s'agit d'une bête requête SQL avec in join.

Si boucle il y a , c'est pour faire le traitement enregistrement par enregistrement lorsqu'on a obtenu le record set


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


Le 22 déc. 06 à 09:23, Jean-Claude SERRANO a écrit :

Non ce n'est pas un problème de logique, c'est simplement une solution de FileMaker de gérer du relationnel n à n sans créer de table intermédiaire.
Mais c'est vrai, que cette solution offerte par FileMaker n'est pas
réellement aux normes des BDD mais permettait un gain de temps énorme en temps de développement, surtout lorsque FileMaker était limité à 50 Fichiers
(donc tables).

Par contre, il est vrai que l'on peut faire un champs identique avec toutes les bases de données, mais il faut faire une boucle pour avoir l'ensemble
des enregistrements liées ce qui n'est pas très sympa au niveau du
développement et pas aux "Normes" des BDD.

Mais avec FileMaker, le lien se fait tout seul avec tout les enregistrements liés sans être obligé de faire une table intermédiaire, ni une boucle et en une seule commande!!. Et pour les problèmes d'incompatibilité, on se trouve dans la même situation que les autres bases de données si l'on ne fait pas
les contrôles.

Maintenant, il est vrai, qu'avec les dernière versions de FileMaker, comme on n'est plus limité en nombre de table, il vaut peut être mieux abandonner cette "astuce" afin de gérer des tables intermédiaires et être compatible
avec les autres BDD.

Snif...

Jean-Claude.

Le 22/12/06 0:06, « Michel LO » <michel dot lo at albireo dot biz> a écrit :

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>