Я бы использовал вариант 2 и добавил бы ограничение, что только один может быть ненулевым, а другой должен быть нулевым (просто для безопасности). Я бы не стал использовать вариант 1 из-за отсутствия FK и возможности связывания с неверной таблицей, если не подчиняется идентификатору типа в соединении.
Существует 4-й вариант, который состоит в том, чтобы нормализовать их как «элементы» с другим (суррогатным) ключом и двумя таблицами ссылок, которые связывают элементы либо с частями, либо с группами. Это исключает NULL. Есть и другие проблемы с этим подходом (элементы могут быть в обоих случаях или без каких-либо простых ограничений), поэтому, если это не требуется по другим причинам, я бы не стал идти по этому пути.
Вариант 3 может подойти - он действительно зависит от того, являются ли эти строки отношением, то есть данными, связанными с первичным ключом. Это одна огромная проблема, которую я вижу с представленными данными, отсутствие ключа-кандидата - я думаю, вам нужно сначала решить эту проблему.