Я разрабатываю базу данных для хранения совокупности данных о продуктах, которые вытягиваются через API и очищаются от сети. Этот скребок вытащит некоторые данные, которые являются статическими, и некоторые данные, которые меняются со временем. Поэтому для каждого типа данных (статическая/переменная) будет отображаться одна таблица. Я пытаюсь решить, должна ли быть отдельная таблица для переменных данных, которая очищается по сравнению с переменными данными, которые вытягиваются через API.Нормализация базы данных SQL с аналогичными данными, управляемыми различными инструментами
Сначала я думал, что они должны храниться в отдельных таблицах, потому что они управляются отдельными инструментами. Однако данные будут извлекаться через API и очищаться по одному и тому же расписанию (ежедневно), и поэтому оба они будут сопоставлены с тем же идентификатором продукта и датой. Таким образом, кажется, что я мог бы просто объединить схему обеих таблиц, чтобы сохранить время соединения во время запросов для обработки данных позже. Очевидным недостатком этого является управление тем, нужно ли создавать или обновлять строки всякий раз, когда выполняется один из процессов (какой из инструментов scraper vs API создает или обновляет строки).
Для чего эти скрипты будут извлекать данные за миллионы (может быть, десятки миллионов) строк в день и хранить их довольно долго. Таким образом, таблицы будут очень большими, и именно поэтому меня интересует время присоединения позже.
Вот пример, если в этом примере все немного облачно. Для этого есть несколько отраслей, но я просто использую недвижимость:
Скребковые статические данные: ProductID, адрес, город, штат, почтовый индекс, квадрат и т. Д.
Скремблированные данные переменной: ProductID, Price, PricePerSqFt и т. Д.
Данные переменных API: ProductID, PageHits, UniqueVisitors и т. Д.
Главным образом здесь важны данные переменной. Итак, просто подведите итоги, разделите таблицы ради общих принципов проектирования или одну таблицу ради скорости на соединениях?
Заранее спасибо за вход
Данные переменной также будут привязаны к метке времени. Я забыл добавить это в схему примера.Казалось бы, не имеет смысла хранить переменные и статические данные в одной и той же таблице, поскольку статические данные будут повторяться в каждой строке одного и того же элемента, что кажется ненужным. Итак, с привязкой к дате, вы тогда порекомендовали бы две таблицы или все еще рассматривали бы только одну? Спасибо за ответ – gseccles
Когда метка времени является частью ключа, то есть вы намерены иметь более одной записи данных переменных для каждой записи продукта, тогда переменные данные должны быть в отдельной таблице, чтобы избежать избыточности статических данных. – TAM