I am currently developing a database through MS Access 2003 and stuck in a circular reference problem. Basically, it follows the following relationship triangle (this is a simplified form of my relationship table):
position oo oo / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ Oo oo employee oo -------------------- oo software,
where the conditions Employees and software are tables and "oo -------...------- oo"
displays many-to-many relationships among them.
In short, all employees are employed in specific companies (some of them have been assigned for more than one), and they have specific software specifications based on their status (s) Remnant to use the piece, however, are exceptions, and some employees are given access to some other software packages, apart from their permission (v) they are allowed accordingly.
The question is, is it okay to allow a circular relationship in such a database? Are there any such measures that do not require denormalization?
Thank you in advance, V. S.
Your diagram is elliptic in the sense that you include N: N in the tables between all your entities. Have done They make a big difference in the side effects of circular relationships with direct 1: CASCADE DELETE can have real problems with N relationships, and potential deadlock. But among the EN tables, you should not have the problem, as the Cascade Delay will run "Downhill" from only 1 table to N, and N: N Do not back up the chain from the table to the other, the parent's table.
It seems that this is a common problem, address isomorphic with problem, i.e., can be a personal address of a person and may be the heir to an address from the employer, and @ saif khan's solution One form of deletion of software inheritance from the situation is denormalization, in which you have collapsed the relationship between two complex units in a single one. I never know how this is due to potential circular relationships, but due to the performance issues (and non-editing) coming from a combination of the same result set of all software / addresses, for which the union Required. I will be tempted to use a trigger to duplicate the software inherited from the situation with the record of adding the person to the software. Before 2010, this was not possible at the engine level in Access / Jet / ACE, but the A-2010 added table-level data macros which can be used to implement equivalent to triggers. This can be a case where this new feature may allow you to implement this structure with the trigger.
But I'm not sure that I'm resting with the data being repeated, although the trigger will allow you to keep a duplicate data at one time at the engine level.
Comments
Post a Comment