• Ya, see, if you already have a data set in your original schema, it makes it a bit more difficult, as you will have to migrate your data to the new schema, if the setup was for an app which will be receiving data for the first time, then it would almost be easier, as you can set up the schema and have the app populate it in a specific format,

    To answer the first insert portion, no, the whole idea is to have all your event roles in one table, and to not have to create a table/column for each type, then assigning your new type to a participant,

    it basically works like this:

    Case 1

    --New participant, existing role

    ----Add participant with id of role to which they belong to in participants table

    Case 2

    --New participant, new role

    ----Add role to eventrole table, with the id of the parent role if it has one (say like student, would have id of teacher in parentid, and teacher would have principal's id in parentid, but principal would have null)

    ----add participant with id of new role created

    **This will ensure that you can always add new roles,without having to do any changes to your schema

    in your case, you don't have to re-capture all the data, but to migrate may be a bit difficult, depending on your current data structure, there were a few different versions you mentioned previously in your post, so by now I am not sure which one you have currently, but what you basically need to do is to populate the specific fields of the new schema table by doing a select from your current schema table to be in the format of the new schema table

    ex. say your current format is in the format where you have an event with different participants and then you have a column which identifies the role of the participant, (as I losely understand, this is how your current schema is), in this case you will do your insert into the new schema participant table as follows:

    --say you want to add all the participants who are speakers

    INSERT INTO Participants

    SELECT ParticipantName

    , 1

    FROM OriginalTable

    WHERE isSpeaker = -1

    then from there on, you can do that to "map" each of the participants to a role and thus build your participants table, you will also have to find similar ways of populating the Event and Participant map tables,

    I hope it makes sense, it makes it a bit difficult as currently I am not even sure if your original tables are in such a format so that you will be able to do extracts like these, but I am sure if you understand exactly how the new schema works, you will be able to do the mappings like this, and thus populate the tables from your original tables with only a little effort, please do not go and try to re-type everything, or something like that, there is always an easier way