A given character can appear in many dialogues and a dialogue can contain many characters.
You don't want to use separate fields for this as this both limits you to a specific number of characters and results in a very complext network of relationships and data that is very hard to work with.
The secret to effective many to many relationships is to add a third table, called a "join" table that serves as the link between the original two tables.
Dialogues----<Dialogue_Character>-----Characters ( ----< represents a one to many relationship )
Dialogues::DialogueID = Dialogue_Character::DialogueID
Characters::CharacterID = Dialogue::character::CharacterID
With this setup, you can put a portal to Dialogue_characters on a Dialogues layout and it will list all characters that appear in that dialogue. You can enable "allow creation..." for the join table in the Dialogues to Dialogue_Character relationship. Then setup Dialogue_Character::CharacterID as a drop down list of characters from the Characters table. To add a character to the list, you go to the bottom "add" row of the portal and select one in the drop down. You can include fields from Characters in this portal row to display additional info about that character.
Conversely, if you place a portal to this join table on the Characters layout, it will list all Dialogues in which that character appears.
Here's a demo file that illustrates what I just described in a many to many relationship linking 'events' to 'contacts'. It also illustrates some more sophisticated options and also methods for ensuring that you don't link the same two records twice (such as Linking a character to the same dialog more than once.)
Thank you so so so much! This was exactly what I wanted to achieve. Many-to-many relationships are so confusing but your example made it really clear and easy. It took me a while to get the script right for the creation of new entries but its all running smooth as a tiger in tuxedo now. I don't think that I can thank you enough for being so helpfull.