2016-04-19 5 views
0

У меня есть несколько таблиц, которые генерируются разными системами без уникального идентификатора, доступного для необработанных данных.Настройка первичных ключей в моих таблицах?

несколько файлов, которые из одной и той же системы могут быть объединены на основе:

interaction_time, customer_id, employee_id 

Другие файлы не включают в себя метку времени и есть только interaction_date. Проблема в том, что иногда один и тот же клиент может разговаривать с одним и тем же сотрудником в тот же день несколько раз. Поэтому использование interaction_date, customer_id, employee_id не обязательно уникально.

Использование python (pandas), что я обычно делаю, это найти все уникальные значения interaction_date, customer_id, employee_id. Я фильтрую эти строки как отдельный фрейм данных и делаю свои объединения. Таким образом, эти данные представляют собой строки, в которых один клиент взаимодействовал с одним сотрудником один раз в определенную дату. Затем я объединяю/присоединяю строки, которые имеют несколько взаимодействий, вместе с данными, добавленными после объединения.

Любые рекомендации относительно того, как установить что-то подобное с SQL Server? Я предполагаю, что это должно быть довольно распространенным явлением. Я строю таблицы прямо сейчас, и я не уверен, каким должен быть мой первичный ключ ... составной ключ даты/customer_id/employee_id? Как мне работать с дубликатами (эти строки нельзя присоединить к другим файлам, потому что нет четкого способа связать данные вместе)?

edit- Я просто хотел добавить, что это связывает самые гранулированные данные, которые у нас есть. Это будет использоваться для привязки опроса (который может быть получен спустя несколько недель) обратно к определенному взаимодействию и для привязки другого файла, который имеет длину этого взаимодействия, и другого файла, имеющего возможность продажи в этом взаимодействии, и т.д.

+0

Будут ли какие-либо другие таблицы иметь отношение внешнего ключа к этому? –

+0

Определенно нужен идентификатор для самого взаимодействия. Затем вам понадобятся внешние ключи для сотрудника и клиента. Похоже, что это должна быть таблица взаимодействий, поэтому вам не нужны имена, такие как 'interactive_id' и' interactive_date', 'id' и' date' должно быть достаточно. – Devon

+0

У меня есть 7 отдельных файлов в качестве источников данных. Некоторые из них не включают временные метки. Моя проблема заключается в том, что в одну дату есть несколько взаимодействий. Скажем, что 2 клиента в день (без отметки времени) для клиента с одним и тем же сотрудником. В тот же день есть 5 записей звонков (с меткой времени). Для меня нет никакого способа точно знать, как сопоставить 2 заказа с конкретным вызовом. Конечно, заказы состоялись во время 2 из этих звонков, но я не знаю, какое конкретное взаимодействие имело заказы. Поэтому сложно назначить взаимодействие_ид и знать, как он будет относиться к различным файлам. – trench

ответ

2

Поскольку даже interaction_time, customer_id, employee_id не однозначно определить значения в базе данных, вы можете сделать две вещи:

1) не делайте первичный ключ на всех (хотя это плохая практика)

2) Сделайте полевой вызов как interaction_id, который однозначно определит взаимодействие между потребителем и сотрудником. Это поле может быть настроено на автоматическое увеличение.

+0

Моя задача с пунктом 2 предназначена для файлов, которые имеют только взаимодействие_данных (без метки времени в файле), customer_id, employee_id. Если в эту дату есть 3 взаимодействия (строки) для одной комбинации сотрудников/клиентов, я не могу представить, как я могу присоединиться к нему в файл, который может содержать 5 строк с меткой времени. Таким образом, клиент и сотрудник взаимодействовали 5 раз (включая временные метки), но другой файл без метки времени содержит только подмножество этих взаимодействий (3 из 5). Нет никакого реального способа сказать, какие взаимодействия связаны друг с другом с какой-либо определенностью. – trench

+0

Зачем вам нужны файлы, у которых есть event_date, а не метка времени? После того, как вы написали их в базу данных, вы можете запросить их только на основе только дат. –

+0

Правда. Значение их использования заключается в том, что 90% + клиентов и сотрудников взаимодействуют только один раз на определенную дату. Поэтому я могу привязать значение из файла без метки времени для других файлов с меткой времени. Большой - это заказ. Поскольку на дату было только одно взаимодействие между клиентом и сотрудником, я знаю, что заказ был сделан во время этого взаимодействия. Это означает, что я знаю временную метку, я знаю, был ли опрос в конце концов, я знаю, как долго длилось взаимодействие и т. Д. Это может быть очень полезно для анализа. – trench

Смежные вопросы