Universe Design: Divergences/Cardinalities/Loops

Hi All,

I am designing a Universe where some of the tables are not linked to any other table (I am getting direct data from database). I had plenty of loops which I solved either by using Aliases or Contexts. Now, when I perform an Integrity Check, I have the following:

  1. Some Divergences (as few of tables are standalone)
  2. I have around 20 Cardinalities warning (I have manually set the cardinalities; these 20 are the ones which Designer couldn’t detect automatically)
  3. I get around 400+ Loops (I solved all of them using Contexts. All the Join paths have been covered in either one Context or the other such that no objects throw compatibility error although I haven’t checked this for the entire Universe)

From Design perspective, is there a problem with this Universe considering above issues? Also, is it mandatory that a Loop should show ‘loop resolved in context X’ if it has been resolved using a context? I have set Contexts manually by considering valid business Join paths.

Appreciate your response. Thanks for your time !!


Rajat Sapru :us: (BOB member since 2008-08-28)

Sounds normal - though without looking at the universe it’s impossible to say if it’s properly designed. I would expect to see what you are seeing.


dessa :madagascar: (BOB member since 2004-01-29)

Thanks dessa for your reply !!

I just want to make sure that those warnings (during Integrity Check) are normal (especially the ones regarding Loops). But, I guess, using Aliases would have eliminated the loops (which in case of Contexts gets resolved but still exists).

Thanks !!


Rajat Sapru :us: (BOB member since 2008-08-28)

NOOOOOO!!!

Use aliases and contexts correctly.
Don’t go down the route of adding an alias to get rid of a loop.
If the table is used in two contexts then let it be if it is used for the same purpose.

For example:
Suppose you have a car sales and rental business:
You would alias your date table into a rental date alias and a sale date alias
You would use your showroom_location table in both sales and rental contexts because your business operates sales and rentals from the same venues.

Consider the usage of the table before thinking about aliasing it. If it means the same, keep it as it is. If you are using it for objects with different meanings, alias it.

Well yes that is essentially correct but I am still left confused :frowning: . I am using Aliases when I need a different functionality of the same table. Also, I am using Contexts where required.

My point of conflict is - Is it correct to have the Universe in a state where it shows Loops (on Integrity Check) while its doesn’t give any line indicating ‘this loop is resolved by Context X’?

P.S.: The data flow is normal and I getting correct Joins. All Traps have also been resolved.


Rajat Sapru :us: (BOB member since 2008-08-28)

If every loop has a Resolve By statement and you’re happy with it then it’s fine. If you’re happy the loops are resolved by the correct context(s) then carry on. Unresolved loops need your attention though, resolving with contexts and/or aliases accordingly.

It should say that the loop is resolved. If it doesn’t then you need to look at the loop again.


dessa :madagascar: (BOB member since 2004-01-29)

Once again, thanks Mark and dessa for your time !!
Kindly allow me to explain:

Consider a typical situation:

Table A-------->Table B<------------Table C
Table A--------->Table D <-------------Table C

Table A is joined to Table B (1 - N, in order) and Table C is joined with Table B (N - 1). Similarly, include Table D too.

Now, from Table A to Table C, we have two paths. One via Table B and another via Table D. Naturally, if you take a Object from Table A and Table C, you would be prompted for Context (one which should be defined from Table A - Table B - Table C and the other from Table A - Table D - Table C).

If you remove these two Contexts, and click on Detect loops, you will have a loop saying ‘This loop is not covered by any context’. If you just add one Context and not include the other one, you will get a warning ‘Not solved yet, but the following contexts still exist’.

In my case, I have joined one Table (say X) with around 10 reference tables. Then I have joined another Table (say Y) with those 10 reference table again. Like Reference Table 1 ----> X, Reference Table 2 ----> X and similarly Reference Table 1 ----> Y, Reference Table 2 ----> Y. I made one Context for all the Joins from Reference tables on X and one Context for all the Joins from Reference Tables on Y.

Now, if I detect loop, I get the following warning - ‘This loop can be resolved with an alias’ (The situation is similar as explained above with Table A, B, C, D. Table B & D can be considered as X and Y and A and C to be reference tables).

I am actually incorporating all Joins in my Context (which I believe should resolve this issue) but I guess I am missing something here… :frowning:


Rajat Sapru :us: (BOB member since 2008-08-28)

To keep it simple, once you have introduced a context, then all joins must belong to a context even if they didn’t need a context to begin with.


dessa :madagascar: (BOB member since 2004-01-29)

Yes, that is what I have done. So, while I am seeing the warning ‘Loop resolved by context xyz’ for some loops (On Loop Check), I am also seeing the warning ‘This loop can be resolved by an alias’ for some of them, even though all Joins (in both the cases) have been included in Contexts.

Probably, I can have another look at the Universe. I will share my findings and the inconsistencies.

Appreciate your efforts and time !! :smiley:

Cheers


Rajat Sapru :us: (BOB member since 2008-08-28)