Jump to content
  • 0

Many to Many to Many to...


TheMisfit

Question

Posted

Stel ik heb 5 tabellen en tussen alle tabellen onderling moet een Many to Many relatie bestaan.

 

Ik wil daarvoor 1 enkele (onzichtbare) join-table aanmaken met daarin de keys voor elke tabel (5 keyvelden dus).

Via de relaties en met de nodige portalen kan ik dan automatisch de records aanmaken van de ene tabel in de andere tabel (tot dusver geen probleem)

 

Mijn vraag is nu de volgende:

Stel ik maak vanuit tabel 1 een record in tabel 2 (in de onzichtbare join-table wordt een record aangemaakt met 2 van de 5 sleutelvelden automatisch ingevuld).

Vervolgens maak ik vanuit het nieuwe record van tabel 2 een record in tabel 3 (in de join table wordt opnieuw een record aangemaakt)

Aangezien ik de relatie heb van 1 naar 2 en van hetzelfde record van tabel 2 naar een derde tabel, is het dan mogelijk om het record in tabel 3 te zien vanuit de context van tabel 1???

 

Dit klinkt wellicht moeilijker dan het is. :wink:

 

Voor ik mijn dBase zo ingrijpend ga aanpassen wou ik toch graag even jullie mening hierover.

 

 

Alvast bedankt

9 answers to this question

Recommended Posts

  • 0
Posted

Ja, het record in de joinfile zal dan de 1e, 2e en de 3e sleutel hebben gevuld, in hetzelfde record.

 

Zie bijgevoegd bestandje. (op het layout 1 kun je een record aanmaken in tabel 1, en een record aanmaken in tabel 2, gerelateerd. Op layout 2 kun je vanaf dat zelfde record een record aanmaken in tabel 3, gerelateerd)

test.fp7

  • 0
Posted

Alvast bedankt voor jullie reacties

 

Ik was zelf ook even aan het testen op een gelijkaardige manier als het eerste voorbeeld en dat blijkt inderdaad te werken, alleen gebruik ik recordIDs als key.

 

In het tweede voorbeeld lijkt het me moeilijker te onderhouden en/of uit te breiden als je zoals in mijn geval met minstens 5 tabellen wil werken.

 

Misschien nog een vervolgvraagje hierop:

 

Is het vanuit de 5 tabellen mogelijk om bijvoorbeeld vanuit een record van tabel 3 een BESTAAND record van tabel 1 te koppelen?

Nu kan ik al wel records aanmaken vanop een willekeurige layout naar een willekeurige tabel.

Maar wat als ik gewoon records aan elkaar wil linken die al in de dbase aanwezig zijn?? (we zijn niet vlug tevreden).:wink:

Ik denk dat we dan via een portaal de join-tabel (deels) zelf moeten invullen.

 

hoe zien jullie dat?

  • 0
Posted

Dit zal gescript moeten worden, aangezien je waarschijnlijk niet de gebruiker de ID's in laat vullen?

 

Je kunt dan het ID van het record waar je start opslaan in een variabele, de gebruiker laten zoeken naar een ID in het andere bestand en verderop in je script naar de jointabel gaan en de 2 opslaan.

 

Ps. Je zegt dat het tweede voorbeeld moeilijker onderhoudbaar is. Welke bedoel je dan, we postten ongeveer gelijk en ik heb mijn post nog aangepast (dus ik stond als eerste reactie en nu als tweede).

  • 0
Posted
Dit zal gescript moeten worden, aangezien je waarschijnlijk niet de gebruiker de ID's in laat vullen?

 

Je kunt dan het ID van het record waar je start opslaan in een variabele, de gebruiker laten zoeken naar een ID in het andere bestand en verderop in je script naar de jointabel gaan en de 2 opslaan.

 

Ps. Je zegt dat het tweede voorbeeld moeilijker onderhoudbaar is. Welke bedoel je dan, we postten ongeveer gelijk en ik heb mijn post nog aangepast (dus ik stond als eerste reactie en nu als tweede).

 

Ik vond test.fp7 net iets handiger dan voorbeeld.fp7.

 

Ik laat mijn gebruikers wel ID's invullen d.m.v. een valuelist met als eerste veld de recordID, maar die enkel de waarde van het tweede veld toont (de recordbeschrijving).

 

Blijft dus enkel nog de moeilijkheid om een keuze te maken uit de records in de te linken tabel.

 

Soooo close :?

  • 0
Posted

Misschien heb ik het mis, maar de vraag doet me denken aan een sessie van Jonathan Stark op de laatste devCon. Het gaat erom dat gebruikers eigenlijk alles met alles kunnen linken en daarbij zelf bepalen om welke soort relatie het gaat. Bijvoorbeeld: 'is het lief van', 'is dochter van', 'is hond van', enz...

 

Zelf heeft hij er een sjieke uitleg voor bedacht:

Ginko (User Defined Data Model)

12/19/2005 - Ginko is my proof-of-concept file for non-standard application development techniques with FileMaker. It includes fun stuff like custom menus, hierarchical portals, window-specific globals, etc...

 

Most importantly, it is an implementation of something I refer to as a User Defined Data Model (UDDM), which is to say, the data model is defined by the user over time, rather than by the developer up front. The data is stored in subject-predicate-object triples (like RDF), and the resulting structure is similar to that of a Topic Map. This is useful because defining the data model prior to application development is usually a limited success and results in an inflexible application.

 

Het demobestandje is wel de moeite: http://jonathanstark.com/downloads.php#ginko

  • 0
Posted

Joris,

 

bedankt voor de link, die Stark is geniaal!

Zijn benaderingen zijn een antwoord op een aantal key-questions waar ik al heel lang mee zit.

 

Zelfs zonder het 'user-defined-data-model' toe te passen zijn hetgeen hij 'Squids' noemt de oplossing om alles met alles te verbinden.

 

PS: klopt het dat die 'Ginko'-file niet open krijgt met een account voor volledige toegang. Ik kan hem wel gebruiken maar kan de code niet nalezen :-(

 

Jan

  • 0
Posted
Zijn benaderingen zijn een antwoord op een aantal key-questions waar ik al heel lang mee zit.

Fijn voor je! Maar er zijn ook nadelen: het wordt moeilijker om controles op te leggen en de vrijheid van je gebruiker in te perken waar nodig. Ook de organisatie van een project wordt er niet simpeler op.

 

Die file is niet beveiligd maar er zitten aangepaste menus op. Truukje: switch naar de 'Blank' layout via de balk links. Op dat moment springen de standaard FM menus weer aan en kan je overal in.

 

Het komt erop neer dat je in een tussenbestand voor elke link die je legt tussen twee 'klassen' altijd twee records creëert. Dus stel je hebt hoofdrecord A en B. Dan maak je in je tussenbestand één record met als foreign key1 A en als foreign key2 B. In het tweede record doe je het net andersom. op die manier zijn de twee hoofdrecords altijd in de twee richtingen met elkaar gelinkt.

Meer concreet met Janneke en Mieke:

record 1: Janneke is broer van Mieke

record2: Mieke is zus van Janneke.

 

Veel plezier ermee!

Joris

  • 0
Posted

Hoi Allemaal,

 

In het verlenge hier van zou ik iets willen maken wat ik het "trefwoorden register" noem.

 

Voor een bibliotheekje wil ik en bestand maken met al hun trefwoorden, zodanig dat als ik een trefwoord selecteer ik direct zie welke in het verleden nog meer werden geselecteerd bij dat zelfde trefwoord, en als ik daaruit weer een selectie maak wil ik zien welke daar nog meer bij werden geselecteerd.

 

Dus:

 

Psychologie --> Dementie, Psychiatrie, Obsessie, etc.

 

Psychologie & Dementie --> Psychiatrie, Syndroom van Bla, etc.

 

Psychologie & Dementie & Psychiatrie --> Ziekenhuis

 

op die manier kan je een bibliotheekaris helpen een boek op dezelfde wijze van trefwoorden te voorzien als een ander boek van hetzelfde onderwerp.

 

Ik pruts al veel met relaties en herhalende velden met relaties en van die custumfunctions die regels opsplitsen in hun woorden etc. etc. maar kom er niet uit.

 

Iemand een briljante suggestie?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...