Я створюю API RESTful. Я намагаюся визначитися з найкращим способом проектувати таблиці моїх баз даних навколо своїх ресурсів.
Спочатку я хоч таблиця на один ресурс був би хорошим способом, але зараз я переживаю, що це призведе до експоненціально більших таблиць далі вниз по ланцюгу ресурсів, який ви йдете.
Наприклад, уявіть, що у мене є три ресурси - користувачі, клієнти, продажі. Користувачі - абоненти моїх api, клієнти - це клієнти, а продажі - це покупки, які здійснює кожен клієнт на обліковий запис користувачів.
До ресурсу продажу звертається наступним чином
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Отже, якщо є 10 користувачів, кожен з 10 клієнтів, і для кожного клієнта 10 продажів, розмір таблиці збільшується, чим далі ми рухаємося вниз по ланцюжку ресурсів.
Я досить впевнений, що SQL може впоратися з великими таблицями, але я не впевнений, як читання і запис сповільнить справи. Наведений вище приклад, можливо, не ілюструє це, але мій api буде прогресивно більше записувати і читати далі вниз по ресурсному ланцюгу, який ми йдемо. Тому у мене є сценарій, коли найбільші таблиці в моїй базі даних будуть читатися і записуватися більше разів, ніж менші таблиці.
Також потрібно буде з'єднати таблиці перед запуском запитів. Причина в тому, що я дозволяю кожному користувачеві мати клієнт з тим же ім’ям. Щоб уникнути отримання помилкових даних клієнта, до таблиці користувачів і таблиць клієнтів приєднується {userID}. Це стосується і продажів. Чи приєднуються до великих таблиць і працювати читає і записує повільні речі далі?