У меня есть единый плоский стол, содержащий список людей, в которых записывается их участие в различных группах и их деятельность с течением времени. Таблица содержит следующие столбцы: - имя (первое / последнее) - электронная почта - дополнительный адрес электронной почты - группа - дата события + некоторые другие данные в серии столбцов, относящиеся к конкретному событию c (встреча, семинар) .
Я хочу выделить отдельных людей из этого в отдельную таблицу, чтобы в дальнейшем ее можно было использовать для их профилей, давая им список того, что они посетили, и соответствующую информацию. Другими словами, я хотел бы иметь список людей (профилей) и затем связать его со списком групп, в которых они находятся, а затем со списком событий для группы, в которой они участвовали.
Очевидно, те же люди появляются несколько раз:
| Full name | email | secondary email | group | date |
| John Smith | jsmith@someplace.com | | AcOP | 2010-02-12 |
| John Smith | jsmith@gmail.com | jsmith@somplace.com | AcOP | 2010-03-14 |
| John Smith | jsmith@gmail.com | | CbDP | 2010-03-18 |
| John Smith | jsmith@someplace.com | | BDz | 2010-04-02 |
Конечно, я хотел бы свернуть его в одну запись для Джона Смита с обоими электронными письмами в итоговой таблице People. Я не могу исключить, что может быть больше записей для одного и того же человека с другими электронными письмами, чем эти два - я могу жить с этим. В идеале, чтобы сделать его более сложным, я хотел бы составить список групп, создать таблицу групп (возможно, с дополнительной информацией о группах), а затем список собраний / мероприятий для каждой группы. Связав это, я получу чистую реляционную модель.
Теперь вопрос: есть ли способ выполнить такое преобразование данных в SQL? Или мне нужно написать процедуру (программу), которая будет проходить через базу данных и делать это?
База данных находится в MySQL, хотя я также могу использовать MS Access (он был предоставлен мне в этом формате).