Número mínimo de grupos necesarios para cubrir los permisos de usuario / producto

Tengo una lista de 365 clientes. Cada uno de ellos tiene una lista potencialmente única de productos que pueden pedir, hasta 18 de un total de 24 productos (en la actualidad). Me gustaría usar grupos para asignar los permisos. ¿Cómo puedo determinar el número mínimo de conjuntos de permisos únicos?

Tengo el presentimiento de que la respuesta implica la división relacional, pero todavía estoy muy confuso sobre cómo funciona.

Para aclarar: No solo estoy interesado en qué usuarios tienen exactamente los mismos permisos. Quiero encontrar grupos que pueda usar, cada usuario potencialmente miembro de varios grupos, que pueden reproducir los permisos. Por ejemplo, el grupo "A" podría tener permiso para 99498; el grupo "B" tiene permiso para 99507, 99508, 99512. Los tres usuarios en los datos truncados a continuación serían miembros de "A", y solo los dos primeros serían miembros de "B".

CREATE TABLE UsersProducts (
    [User] INTEGER NOT NULL, 
    [Product] INTEGER NOT NULL, 
    PRIMARY KEY ([User],[Product])
)
CREATE TABLE GroupsProducts (
  [Group] INTEGER NOT NULL,
  [Product] INTEGER NOT NULL,
  PRIMARY KEY ([Group],[Product])
)
CREATE TABLE GroupsUsers (
  [Group] INTEGER NOT NULL,
  [User] INTEGER NOT NULL,
  PRIMARY KEY ([Group],[User])
)

-- Given this UsersProducts information, I want 
--the GroupsProducts and GroupsUsers tables filled.

INSERT UsersProducts
        ( [User],[Product] )
VALUES  (11804,99498),
(11804,99506),
(11804,99507),
(11804,99508),
(11804,99512),
(11804,99547),
(11804,99592),
(11804,99594),
(11804,99647),
(11804,99658),
(11804,99660),
(11804,99667),
(11804,99694),
(11804,99700),
(11804,99771),
(11947,99498),
(11947,99506),
(11947,99507),
(11947,99508),
(11947,99512),
(11947,99547),
(11947,99592),
(11947,99594),
(11947,99647),
(11947,99658),
(11947,99660),
(11947,99667),
(11947,99700),
(11947,99720),
(11947,99771),
(12009,99498),
(12009,99506),
(12009,99507),
(12009,99508),
(12009,99512),
(12009,99547),
(12009,99575),
(12009,99592),
(12009,99594),
(12009,99596),
(12009,99647),
(12009,99658),
(12009,99660),
(12009,99667),
(12009,99694),
(12009,99700),
(12009,99720),
(12009,99771),
(12353,99498),
(12353,99512),
(12353,99547),
(12353,99575),
(12353,99592),
(12353,99594),
(12353,99596),
(12353,99647),
(12353,99658),
(12353,99660),
(12353,99667),
(12353,99694)
-- etc. 365 distinct users, 28 distinct products. 4012 pairings.

Respuestas a la pregunta(1)

Su respuesta a la pregunta