I’m currently revisiting an area of my Windows-based software and looking at changing the relationship from 1->M to M->M. As a result, I need to adjust the UI to accommodate selecting multiple related records.
There are a lot of ways to handle this that are common, but usually pretty clunky. Examples include the two-pane list of all items, and list of selected items, or a list of all records and a checkbox beside each one that applies.
In my case, there may be an awful lot (in the tens of thousands) of records that could be associated, so I’ll probably need to include some kind of search mechanism.
I’m not looking for a hard and fast answer — I can implement something pretty easily that’s functional, I’m looking to see if anyone here has come up with (or seen) any great UIs for doing this kind of thing, whether it’s web based, Windows, Mac, Unix, whatever.
Images or links to them would be appreciated!
Edit: here’s an example of what I’m considering:

I like the way StackOverflow relates many tags with many questions:
Items are displayed as user types
You start obviously with the record you want to associate multiple items with.
As you type the search displays the matches ( no need to press on “Search” )
The user select the desired record ( Sorting would be nice. SO uses “tag relevance”. For instance typing ‘a’ brings Java rather than asp because Java has more questions than asp, in your case relevance may be the user name )
The system creates the relationship ( in memory )
If a number of records ( 5+ ) are filling the input field, they are moved into a semi-regid area ( not a SO problem because it only has 5 tag withing a single question, but in your case something like the “interesting tags” feature would be needed )
Associated items are moved to a “rigid” area
Of course in an ordered manner ( using a table )
This approach has more efficiency by not needing to have the user press on “search” or “add other” which distracts them from what they’re doing, it is being said it interrupts its train of thought.
Also, if you make the user grab the mouse to click on something while they are typing the UI is less efficient ( I think there is something called the Hick’s law about that, but quite frankly I may be wrong )
As you see this approach is pretty much already what you have in mind, but adding some facilities to make the user happier ( The danger would be if the user loves this approach and wants it in other parts of the system )