How to handle many-to-many relationship

Hello friends,
I'm confused, how do many many relationships in my application:

I have agents and projects of two tables.
Each agent can manage several projects.
Each project can be handled by several agents.

Example of table INIT_PROJECT:
ID , PROJECT
1  , X Tower
2  , Y Tower
3  , Z Tower
Example of table INIT_AGEN:
ID , Agent
1  , A
2  , B
3  , C
What is the correct way to join or to represent the relationship between the two tables to get a table that servers as a lookup table also:

is - it to be like this:

Example 1 in new_table
Project_ID , Project_name, handled_by1, handled_by2, handled_by3, handled_by4
1             , X tower        ,  A              , B
or is it:
ID            , Project_name, handled_by
1             , X tower        ,  A            
2             , X tower        ,  B              
3             , X tower        ,  C   
4             , Y tower        ,  A              
5             , Y tower        ,  B              
........
.....             
           
  
Then, on a FORM I have lists of values.
Projects and Agents.
When the user selects a project, he or she can only see the agents engaged in this project in the list of Agents of values.
I use a shuttle box for inserting the values "managed by".

Or do like this:
Example 2 of new_table
ID , PROJECT,...,HANDLED_BY
1  , X Tower,... ,A:B:C:D
2  , Y Tower,... ,A:F:G:I
3  , Z Tower,... ,F:A:I:W
I have two lists of values:
'Project name' and 'Agent '.
When the user selects a project, then he must see only the values of the handled_by that are associated with this project only.

I used this query to prepare the values in the list of officers of the value
SELECT  
  distinct REGEXP_SUBSTR(handled_by, '[^:]+', 1, LEVEL)  d , REGEXP_SUBSTR(handled_by, '[^:]+', 1, LEVEL) r
   
  FROM  (
         SELECT   project, ROWNUM AS id
         ,      handled_by
         FROM   projects 
        ) where project = :P8_project
  CONNECT BY INSTR(handled_by, ':', 1, LEVEL-1) > 0
         AND id = PRIOR id
         AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL; 
Can you please advice what is the right way?

Best regards
Fateh

Somone was asked once to use the relation tables in that many many cases and I used it since with no problems until now.

To apply in your case, I therefore project table, agent and a relationship table call PROJECT_AGENT_R which has

(1) project
(2) Agent_ID

The primary key for each table as a foreign key.

You can update the relationship via process page in your table when after you have created a project for an agent.

Do not use string concatenated as your code above as it can be annoying and not really a good practice.

Tags: Database

Similar Questions

  • How to display a many-to-many relationship?

    Hello
    I wonder how would you present the master-detail-data of an n: m-relationship in the ADF?

    Suppose we have a table x and a y in the table, the xy table is our cross refrence table.

    I know that you could represent the realtionship via associations and display links, it is not clear to me how to display the detail data but I don't want to show the features of the cross-reference-table (xy).
    Instead, the data in the table there should be presented as details of table x.

    I hope you understand what I'm shooting.

    Thanks in advance.

    This can help you
    http://mjabr.WordPress.com/2011/05/21/how-to-implement-many-to-many-Association/

  • How to implement many of many relationships?

    I've been google searching for articles on the implementation of many-to-many relationships and find as many hits I'm swamped.
    Someone at - he preferred an article on this topic?

    In my example, I have a number to-many between the table 'user' and 'project' of the table.
    Why do some articles indicate that the primary key of the table of links 'UserProject' contains two foreign keys for 'user' and 'project '? If we want to find all projects for a given "user.id", we not specifying the "project.id". It will not be reduced in a linear search then?

    I thought we should receive the 'fk_user' foreign key as the primary key and create an index of the "fk_project" (or vice versa). So if we specify the "user.id" we can quickly find all the corresponding values of 'project.id '.

    There are oracle-specific issues I should know about?

    Thank you
    Siegfried

    As you guessed, a primary key is intended to preserve the unique character.
    If you have a composite primary key, so if you provide columns in the predicate (where clause) that are the primary key columns, then they can help you with an effective search.

    If you have a requirement that you have aquery that always uses the 2nd and 3rd in the columns of the primary key, but never the first column, then you might want to add a composite index on these two columns.

    Remove the referential integrity of a production database is pretty much one of the worst things you can do.
    Think about the consequences: you'll have records of children who do not have a parent record or worse have the incorrect parent record. It is best to not leave a record get in the database to allow incorrect data.

    Incorrect data are a nightmare to fix, as its very difficult to find the source, and worse still, it can remain unnoticed for years.

    Your mantra should be to avoid bad data in the database. This by applying constraints at the level of the database.
    This means that all data entered with conform to these rules.

  • How to create the Group of cache for many to many relationship tables?

    Hi, Chris,.
    Page 4-4 < < the user manual of the Oracle Database Cache in memory > > there is a saying,
    A child table cannot reference multiple parent tables.
    If there is a many-to-many relationship table in Oracle and I want to cache in TT, there is not a la carte approach that?
    Or I have to logically break his references to the two tables in one of them?
    I forgot to mention that I have a root table and one of its child tables is a many-to-many relationship table.

    Yes, that's correct. You can not exactly this model in TimesTen. You to omit some of the relationships so that things are defined in TimesTen as a pure parent/child relationship. You can also consider putting the tables into groups separate cache. Of course, there are consequences to this:

    1. the 'missing' relationship cannot be run by TimesTen. The application must respect/run it. If this is not some updates may not to be propagated to Oracle if they violate the relationship in Oracle.

    2 If the parallel AWT is configured (to improve the performance of spread) it will not be used for all tables where they lack of relationships. All updates to the tables in the order will apply.

    Chris

  • How to handle the onTriggered many ActionItem created dynamically

    Hi, I created the ActionItem dynamically using (loop)

    because data is from webservice

    How to handle the onTrigerred?

    If my code is like this:

    for (int i = 0; i)< alist.count();="">

    {

    My page page * = iRoot-->findChild ("SpecificObject");
    ActionItem * action = ActionItem::create () .title (aList [i] .name);

    bool res = QObject::connect (action, SIGNAL (triggered ()), this, SLOT (handleAction (())); what I'm confused because I don't know what action is triggered
    Q_ASSERT (res);
    Q_UNUSED (res);

    my page-> addAction (action, ActionBarPlacement:efault);

    }

    MyClass::handleAction() Sub

    {

    aFunction(); This parameter of function required of aList, said user.user aList [i]

    }

    Do I need to create handleAction() as well as added actionItem SLOT

    But I don't know how much action added because it is dynamic server

    Thank you

    There are a few options:

    Create a single location and connect all the signals. You can then call sender() into the slot to retrieve the object that sent the signal and go from there. You can also use a QSignalMap that maps each signal to a value and send this value to a single location. You can also use QSignalMap::sender() to get the sender object.

    I used the QSignalMap to do something similar for handling created dynamically successfully drop-down lists.

  • many-to-many relationship, recording is not linktable

    Got a little a legacy application that previously had flushAtRequestEnd set to true.  We have knocked down the flag, and now our many-to-many relationships do not work properly.  Save individual records very well, BUT the link table records are not created.  Here's how the entities are essentially in place.

    persistent component = "true" table = {'encounters'

    ...

    property

    name = "CaseFollowUps".

    SingularName = "CaseFollowUp".

    FieldType = "many-to-many.

    CFC = "FollowUp_NEW."

    LinkTable = "EncounterFollowUp."

    fkcolumn = "EncounterID."

    inversejoincolumn = "FollowUpID;

    ....

    public function addCaseFollowUp (fu) {} void

    ArrayAppend (variables. CaseFollowUps, fu);

    arguments.fu.addEncounter (this);

    }

    ...

    }

    persistent component = "true" table = {'FollowUp_NEW'

    property

    name = 'encounters '.

    SingularName = "meeting".

    FieldType = "many-to-many.

    CFC = "meeting".

    LinkTable = "EncounterFollowUp."

    fkcolumn = "FollowUpID.

    inversejoincolumn = "EncountersID";

    }

    I call the practical method of "addCaseFollowUp" a pre-existing meeting within a transaction.  No error thrown.  I see this code of Hibernate for the insertion of the FollowUp_NEW registration:

    Insert

    in

    FollowUp_NEW

    (Note, UserDateTime, UpdateDateTime, CreateDateTime, DispositionID, FollowUpRequestID, CommunicationTypeID, username)

    values

    (?, ?, ?, ?, ?, ?, ?, ?)

    But I don't see a request to Hibernate for the insertion of the EncounterFollowUp record.


    Suggestions?

    pnahtanoj wrote:

    But I don't see a request to Hibernate for the insertion of the EncounterFollowUp record.

    Is it perhaps a query that updates EncounterFollowUp? If there is nothing, then run the code as one only. This woud the fact rule the ORM session ended prematurely.

  • one-to-many relationship

    Read the article here...

    http://www.databaseprimer.com/relationship_1tox.html

    To illustrate the one-to-many relationship consider the table of sampling plan and data below:
    authors table
    ============
    author_id (primary key)
    LastName
    FirstName
    book_id (foreign key - link to table books book_id)


    table Books
    ===========
    book_id (primary key)
    title
    author_id  lastname  firstname   ->     book_id  title
    ---------  --------  ---------   ->     -------  ------
    0001       henry     john        ->     0001     a database primer
                                            0002     building datawarehouse
                                            0003     teach yourself sql
    0002       johnson   mary        ->     0004     101 exotic recipes
    0003       bailey    harry       ->     0005     visiting europe
    0004       smith     adam
    then how the data on the "authors" table columns 'author_id' and 'book_d '?

    don't know how to frame the table 'authors '...

    It would become the relation 1-1... is it normal?

    Please help how data will be in the "authors" table

    Thank you

    You do not want to have a database template that you have illustrated below. Why? Well to start tt does not pass even the first normal form. Secondly, if you had ever updated the author's name, you will need to update in several places, which could lead to problems of data integrity. A database designed to reduce redundancy, the structure that you have proposed increases it.

    If you had been modelling a one-to-many relationship, it would be more appropriate:

    CREATE TABLE authors
    ( author_id  NUMBER        PRIMARY KEY
    , last_name  VARCHAR2(200) NOT NULL
    , first_name VARCHAR2(200) NOT NULL
    );
    
    CREATE TABLE books
    ( book_id NUMBER        PRIMARY KEY
    , title   VARCHAR2(200)
    );
    
    CREATE TABLE authors_of_books
    ( author_id NUMBER NOT NULL REFERENCES authors(author_id)
    , book_id   NUMBER NOT NULL PRIMARY KEY REFERENCES books(book_id)
    );
    

    This models your one-to-many relationship with a "join" table or "bridge." The drawing above gives you the ability to change the author freely or to book the title attributes in the same place increases your data integrity.

    However, a many-to-many relationship may be more appropriate since multiple authors can write a book. So you would change the tables authors_of_books as follows:

    CREATE TABLE authors_of_books
    ( author_id NUMBER NOT NULL REFERENCES authors(author_id)
    , book_id   NUMBER NOT NULL REFERENCES books(book_id)
    , CONSTRAINT authors_of_books_pk PRIMARY KEY (author_id, book_id)
    );
    

    I hope this helps!

  • With a many to many relationship data in a table - recursive sql?

    Hello
    I'm trying to group data associated with a many to many relationships in a number of unique group using SQL only. The table looks like this.

    AMOUNT OF THE CHECK PLAN

    1 10
    A 15 2
    2 11 B
    3 12 B
    4 13 B
    4 16 C
    5 17 D

    The result should look like this. Since A is linked to 2, 1 and 2 correspond to the B and B are related to 3 and 4, 4 is related to C, these lines should be considered as a group. Any direction on where I should start looking for or if there is no function of Oracle that will be much appreciated. The version of oracle's 10g.

    CHECK THE PLAN AMOUNT GROUPID

    1-10-1
    2-15-1
    2 11 1 B
    3 12 1 B
    1 13 4 B
    4-16-1 C
    5 17 2 D



    CREATE THE TABLE PAS_DBA. GRPDEL
    (
    CHECKID VARCHAR2 (5 BYTE),
    PLAN OF INTEGER,
    AMOUNT NUMBER (6.2)
    );

    TOGETHER TO DEFINE
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ('A', 1, 10);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ('A', 2, 15);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ("B", 2, 11);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ("B", 3, 12);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ("B", 4, 13);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    ("C", 4, 16);
    Insert into PAS_DBA. GRPDEL
    (CHECKID, PLAN, SUM)
    Values
    (A ', 5, 17);
    COMMIT;

    Hello

    Good thing you're uisng Oracle 10. I don't think you could do this in pure SQL using any earlier version, but the CONNECT BY NOCYCLE feature, introduced in Oracle 10, makes this possible.

    WITH     got_groupname     AS
    (
         SELECT     checkid, plan, amount
         ,     MIN (CONNECT_BY_ROOT checkid)     AS groupname
         FROM     grpdel
         CONNECT BY NOCYCLE     (     checkid     =  PRIOR checkid
                           AND     plan     != PRIOR plan
                        )
                   OR     (     checkid != PRIOR checkid
                        AND     plan     =  PRIOR plan
                        )
         GROUP BY  checkid, plan, amount
    )
    SELECT       g.*
    ,       DENSE_RANK () OVER (ORDER BY groupname)     groupid
    FROM       got_groupname      g
    ORDER BY  checkid
    ,            plan
    ;
    

    Output:

    CHECK PLAN AMOUNT GROUPNAME GROUPID
    ----- ---- ------ --------- -------
    A        1     10 A               1
    A        2     15 A               1
    B        2     11 A               1
    B        3     12 A               1
    B        4     13 A               1
    C        4     16 A               1
    D        5     17 D               2
    

    You did not ask the groupname column, but I realized just to help show how it works. The subquery got_groupname associates each checkid with each other the checkid, regardless how many not deleted the two lines are. MIN finds the lowest checkid that each is bound, which generates a unique group identifier. Personally, I sould like usage of groupname as identifier. It tells you in the blink of an eye that B is a member of the same group has. However, it is not the same as that of a certain number, so if you need a number, you can derive from groupname with the analytical DENSE_RANK function.
    In many versions of Oracle, CONNECT BY queries do not work properly if they contain functions analyric. I don't know if this is the case in your version, but I don't think it's worth taking a chance. By CONNECT BY in a subquery no analytical function and then by the analytical function in a super-requete, we eliminate any chance of such a conflict.

    Thanks for posting the CREATE TABLE and INSERT statements; It is very useful.
    You want to be more useful? Do not publish the name of schema, PAS_DBA. Not many people who want to help you have a schema called PAS_DBA, and they probably won't create a. He probably doesn't. ' t help, either; probably, you connect PAS_DBA to create the table in any case.

  • How to reset many Solitaire games played and won Matches of the counters?

    How to reset many Solitaire games played and won Matches of the counters?

    Hi Keith,

    Found an answer for Vista, that should work for you in Windows 7.

    To reset the game statistics, you must delete some files. These files will be re-created automatically the next time you play the game. The files are located in the following location: 'C:\Users\[UserName]\AppData\Local\Microsoft Games\ [game]", where [username] is the name of your account and [game] is the name of the game (in your case, Solitaire). Just delete the contents of the folder, but DO NOT delete the folder itself.

    http://www.Vistax64.com/gaming/139902-Solitaire-statistics-reset.html

  • Is an extra Associative entity automatically created when we do a lot of many relationships?

    Hello

    I use SQL DEVELOPER DATA MODELER Version 4.0.2.840.

    My question is when we create many to-many between two main entities let PRODUCT and SALES (master). then we want to create a table associative entity SALES_DETAIL (details of sales)

    Is there an option that allows me to create an associative entity automatically with two associations of old masters. As it is automatically created with TOAD DATAMODELER.

    Thank you.

    Hello

    many-to-many relationship is transformed into associative array / intersection during the engineering to the relational model. If you add attributes to the relationship that they will turn to the columns of this table. Use "Show > attributes of the relationship" in the context menu of the diagram so that they are visible on the diagram.

    Philippe

  • Cascading list of values with a many-to-many relationship

    Hi all

    I have three paintings; semester, subject and half of subject. Each semester has a lot of topics and a subject can be taught in several semesters.

    create table semester(
         id number not null,
         name varchar2(50) not null,
         primary key(id)
    );
    create table subject(
         id number not null,
         name varchar2(50) not not null,
         primary key(id)
    );
    create table semester_subject(
         id number not null,
         semester_id number not null,
         subject_id number not null,
         primary key(id),
         foreign key(semester_id) references semester(id),
         foreign key(subject_id) references subject(id),
         constraint semester_subject_uq unique(semester_id, subject_id)
    );
    
    

    EDIT: I have a page with a report that shows all students who are currently enrolled in the selected for the selected session object.

    There are two selection lists at the top of the report, one for the half and the other for the subject.

    What I try to do is when you select a semester in the half selection list, the topic selection list should contain only the subjects for the half of some (not all) in the subject of the painting.

    h

    If the relationship was of 1 to many that I could write to see half of value

    select name, id
    from semester
    order by 1
    
    

    and for the purpose of value list

    select name, id
    from subject
    where semester_id = :PX_SEMESTER
    
    

    But now that the relationship depends on the table of semester_subject, I can't find a way to achieve this and Googling has not helped.

    Thanks in advance for any help.

    I believe that this issue has also been implemented on stack overflow plsql - list of values cascading with many-to-many relationship - stack overflow and received a very wide response. If the OP has not yet verified, he may want to.

    (FYI: I'm not the person who answered there.)

  • Subsequently, how the handle portion e-mail spam?

    Subsequently, how the handle portion e-mail spam?

    If your questions have been answered, please mark my answer as your problem so that others who have the same question can find it. Thank you.

  • Error, please help me, how to handle this?

    Please help me, how to handle this? 2892 ArgumentException: the parameter: System.Net.Sockets.OverlappedAsyncResult is not valid. Use the object returned by the corresponding asynchronous Begin call. Parameter name: asyncResult: at System.Net.Security._SslStream.EndRead (IAsyncResult asyncResult) at?. (IAsyncResult) at System.Net.LazyAsyncResult.Complete (IntPtr userToken) at System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state) to the System.Net.ContextAwareResult.Complete (IntPtr userToken) at System.Net.LazyAsyncResult.ProtectedInvokeCallback (object result, IntPtr userToken) at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback (errorCode, UInt32, UInt32 numBytes, nativeOverlapped NativeOverlapped *) to System.Threading._IOCompletionCallback.PerformIOCompletionCallback (errorCode, UInt32, UInt32 numBytes, NativeOverlapped * pOVERLAP)

    It's not a usual mistake. Despite this, try this link to error.

    https://social.technet.Microsoft.com/search/en-us?query=NET.Sockets%20based.%20overlapped&AC=4#refinementChanges=&PageNumber=1&showMore=false

    Details of youre also treat, try .net cmd, opening type: netsh Winsock reset exit, restart the pc

  • How to handle the null value

    Hi all

    Can someone tell me how to handle null.

    I have a radio button, I need to capture the worth and inspiring I have a search criterion.

    If I select the radio button without problem. If I did not choose the option button it gives me the error.

    OAMessageRadioButtonBean var1 = (OAMessageRadioButtonBean) webBean.findChildRecursive ("job");
    If (var1! = null)
    {
    S1 = var1.getValue (pageContext) m:System.NET.SocketAddress.ToString ();
    }

    Please suggest.

    Kind regards

    Sangu

    S1 = (String) var1. GetValue (PageContext);

  • Inactive Contacts - how you handle the?

    We currently have XXX, XXX (there is no way I'm telling you, in fact) of contacts in Eloqua, which is not just whatever be done in a VERY long time. We have recently acquired another company who does not use Eloqua and working on their integration in our system. Now I'm sure that like Eloqua me just buy more space, I work on a project to clean up the deadbeats and leave room for shiny new customers. The program that we run has three points of contact, and if a customer engages in any of the steps they got out the program and will be left in the system. In the last step we let them know that if we do not hear back from them within 10 days, we will assume that they are super busy and we will remove them from our database. Also, we are ignoring those who joined in the last 12 months, because they can always be interested in reading some of our materials and have not gotten yet around him.

    This seems to be an Amir of a program and will surely cause our stats boost then because we send is more people that never open anything.

    How you handle these kinds of people? Do you agree with our approach?

    Absolutely!  It is a perfect process.  In my life earlier as someone who was directly in the marketing of opps, we did this process manually about every 3 months.  Automating this process with a campaign and send to the PB to automatically remove contact looks a perfect nurture automated.

    You can even include the verbiage in the last email, if they "do not" provide this mail they will be removed from the system.

Maybe you are looking for