Вообще по своему опыту давно уже уяснил себе, что в MODX (в частности в xPDO) у всех объектов (таблиц) ID — всегда должен быть id. Даже если у вас на самом деле первичный ключ — это две или более колонки, все равно Primary key создавайте ID, а на те колонки создавайте Unique key. Иначе куча багов, включая невозможность удалить или обновить объект. Это касается не только MIGxDB, в нем это идет от xPDO.
К слову, мне по началу было сложно с этим свыкнуться. Еще в сотовой компании, обслуживая их биллинг на Оракле, я усвоил такую методику от Питер-Сервиса (да-да, это такие крутые ребята с доменом http://billing.ru): первичный ключ — это до 4-х согласных букв от понятного слова (если букв меньше, то и гласные годятся), например usr_id (на примере modx_users). А вторичный ключ — это дважды id, например usr_usr_id (который в таблице modx_user_attributes заменил бы колонку internalKey). Так, глядя на вторичный ключ сразу понимаешь что он именно вторичный ключ и по нему сразу понимаешь какой первичный ключ искать. Просто когда работаешь с тысячами таблиц, по-другому никак. Блин, пришлось мне как-то столкнуться с хэлп-деском HP написанном на MSSQL нифига не по такой методике, уверяю — там мозги можно было вывихнуть.
Вот мне на MODX-е не удалось такую методику применить, пришлось отвыкать от нее.