Estou criando uma API RESTful. Estou lutando para decidir a melhor maneira de projetar minhas tabelas de banco de dados com base em meus recursos.
Inicialmente, pensei que uma tabela por recurso seria um bom caminho, mas agora estou preocupado que isso resulte em tabelas exponencialmente maiores à medida que você avança na cadeia de recursos.
Por exemplo, imagine que eu tenho três recursos - usuários, clientes, vendas. Usuários são assinantes da minha API, clientes são usuários e vendas são compras feitas por cada cliente na conta do usuário.
Um recurso de venda é acessado da seguinte maneira
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Portanto, se houver 10 usuários, cada um com 10 clientes, e para cada cliente houver 10 vendas, o tamanho da tabela aumentará à medida que avançamos na cadeia de recursos.
Estou bastante confiante de que o SQL pode lidar com tabelas grandes, mas não tenho certeza de como a leitura e a gravação irão atrasar as coisas. O exemplo acima talvez não o ilustre, mas minha API terá gravações e leituras progressivamente mais aprofundadas na cadeia de recursos que percorrermos. Portanto, tenho o cenário em que as tabelas maiores do meu banco de dados serão lidas e gravadas mais vezes que as tabelas menores.
Também será necessário ingressar nas tabelas antes de executar as consultas. O motivo é que eu permito que cada usuário tenha um cliente com o mesmo nome. Para evitar a obtenção de dados incorretos do cliente, a tabela de usuários e as tabelas de clientes são unidas por {userID}. Este também é o caso das vendas. A junção de tabelas grandes e a execução de leituras e gravações desaceleram ainda mais?