Si fuera por mí...
Debe satisfacer los requisitos de la base de datos y de sus aplicaciones.
Agregar un entero de incremento automático o una columna de identificación larga a cada tabla para que sirva como clave principal se ocupa de los requisitos de la base de datos.
Luego agregaría al menos otro índice único a la tabla para que lo use su aplicación. Este sería el índice en employee_id, o account_id, o customer_id, etc. Si es posible, este índice no debería ser un índice compuesto.
Yo preferiría los índices en varios campos individualmente sobre los índices compuestos. La base de datos usará los índices de campo único siempre que la cláusula where incluya esos campos, pero solo usará un compuesto cuando proporcione los campos exactamente en el orden correcto, lo que significa que no puede usar el segundo campo en un índice compuesto a menos que proporcione tanto el primero como el segundo en su cláusula where.
Estoy a favor de usar índices calculados o de tipo Function, y recomendaría usarlos sobre índices compuestos. Hace que sea muy fácil usar el índice de función al usar la misma función en su cláusula where.
Esto se ocupa de los requisitos de su aplicación.
Es muy probable que otros índices no primarios sean, en realidad, asignaciones de los valores de clave de índices a un valor de clave primaria, no los de rowid (). Esto permite que se produzcan operaciones de ordenación física y eliminaciones sin tener que volver a crear estos índices.