Aunque estoy de acuerdo con la respuesta de @ JohnWu de que Security By Obscurity es un mal concepto, hay una cosa:
Sí. En cierto modo.
Los esquemas de bases de datos complejas suelen tener relaciones complejas. Pero déjame dar un ejemplo simple:
Tienes una mesa
+----+------------+-------+
| ID | CustomerNo | Order |
+----+------------+-------+
| 0 | 1 | Nuts |
| 1 | 1 | Bolts |
| 2 | 2 | Nuts |
| 3 | 1 | Wire |
+----+------------+-------+
Donde ID
es una clave principal que aumenta automáticamente, CustomerNo
se refiere a la clave principal de su tabla de clientes, y Order
se refiere a la clave principal de su tabla de pedidos. De esta manera, asigna sus pedidos a los clientes.
Usted, por supuesto, solo deja que cada cliente vea las filas que "pertenecen" a sí mismos.
Aún así, ¿ves el problema?
Exactamente, a través del campo de ID que aumenta linealmente, el cliente 1 tiene una manera fácil de averiguar cuándo la competencia hace sus pedidos, simplemente no actuando como un cliente "normal", haciendo pedidos en grandes cantidades, sino haciendo pedidos de forma automática cada minuto.
De esa manera, se dan cuenta que todos los martes por la tarde a las 4:30 pm, la competencia ordena. Ahora, conociendo muy bien el mercado de hardware, ponen una gran opción de venta en el mercado todos los martes a las 4:20 pm, lo que aumenta el precio de mercado de las nueces, perjudica a su competidor y, además, se beneficia financieramente del conocimiento que nunca deberían haber conseguido el primer lugar.
Esta es una cuestión de datos limpieza , en principio. Una clave primaria monótona le proporciona información (parcial) que no debería tener. Por lo tanto, la API de su cliente debería asegurarse de que la fuga de información sea cero. Y quiero decir matemáticamente : la información tiene una pseudo-unidad, un bit, y existe una disciplina matemática completa llamada teoría de la información , que describe cuánta información hay en la observación de un cierto evento basado en la aleatoriedad (por ejemplo, si hay más de dos clientes en esa tabla, no puede saber cuál de sus competidores hizo el pedido a las 4:30 p. m., pero todavía tiene probabilidades de esto, y por lo tanto, no cero información).
Es muy poco probable que pueda ocultar dicha información a sus clientes si tienen acceso al esquema de base de datos. De hecho, ese esquema no les ayuda sin que usted les dé información que probablemente no deberían recibir. En ese sentido, bueno, su esquema no necesita ser secreto, pero algunos de los datos que probablemente aún considere "relacionales" dentro de los registros accesibles de un cliente deberían, de hecho, ser secretos para el cliente.