С одной стороны - да, не нормализирована и вообще - классический антипаттерн проектирования, когда в одно поле пихают значения через запятую.
С другой - надо посмотреть на предметную область и подумать - а дейстительно ли есть есть смысл в разделении? На вид конкретно в данном случае - майскл используется как key-value хранилище, которое быстро достает список документов и отдает его наружу. Дальше сервис уже сделает сплит по запятой и пойдет доставать документы куда-то с хранилища/пойдет куда-то в солр/еластик чтоб уточнить информацию по каждому конкретному документу. Т.е. в случае если нам всегда нужен весь список документов - мы имеем ситуацию когда от разделения мы только теряем (т.к. больше таблиц, больше джойнов, сложнее структура, больше цпу/рам тратится чтоб все достать/хуже кеш хит => мы можем выдержать меньшую нагрузку).
Нужно четко различать где денормализация т.к. так нужно, а где - т.к. нехватка времени/знаний/желания. И да, этот пример скорее для демонстрации идеи. В реальном мире может оказаться что по ключу "key1" будет лежать строка в пару гигабайт, потому настолько наивный подход работать не будет.