Как спроектировать отношения для вариантов данных?
-
16-10-2019 - |
Вопрос
Помогите мне определить табличные отношения для данных с несколькими структурами. Мне нужно отслеживать лиды. Ведущие поступают из нескольких источников. Каждый источник ведущего имеет свою собственную структуру данных. Мне нужен совет, представляющий это в реляционной базе данных.
Каждая запись в таблице «Список проданных продуктов» (определенная ниже) имеет источник ведущего. Ведущие могут поступать от организаций, врачей, офиса компании и сотрудников компании. Вот различные типы данных, которые составляют лидерство.
TABLE Organization: - Name -- TEXT TABLE Doctor: - NPI# -- INTEGER (unique for each doctor. I planned on using this as primary key) - FirstName -- TEXT - LastName -- TEXT TABLE Company Office: - Location -- TEXT TABLE Company Employee: - Department -- one of {Sales, Technician, QA}. Note that the employee is not tied to an office. Office leads are leads that come from misc office staff at the various locations. - FirstName - LastName Here is TABLE Products Sold List: - [misc fields] - PrescribingPhysicianNPI > many-to-one > Doctor.NPI -- "doctor that prescribed the product for the patient" - SalesRep > many-to-one > [Company Employee].PrimaryKey -- "Sales Rep credited for the sale. Needed for commissions calculation" - LeadSource > ???
Информация о MISC:
Компания предлагает стимулы для потенциальных клиентов (аффилированная комиссия) и стимулы для сотрудников продаж (Комиссия по продажам). Ведущие от организаций и офисов компании не получают оплачиваемой партнерской комиссии. Я рассматриваю возможность слияния офиса компании в организации таблицы и использования «Office -« в качестве данных для отслеживания различных офисов (т.е. opronal.name = »Office - Cincinnati»). Плохая идея? Вопросы?
Решение
Это может вызвать немного изменений для ваших таблиц, но мы делаем что -то подобное на работе:
Убедитесь, что каждая таблица имеет какой -то первичный ключ Int/Guid.
Организация таблица
ID | Name
1 | MyOrganization
Затем создайте типовый стол, чтобы разместить ваши разные типы лидов:
LeadSourceTypeKey | Description
1 | Organization
2 | Company Office
Затем в вашей таблице продуктов SoldList добавьте 2 столбца LeadSourceID
а также LeadSourceType
Тогда вы можете легко запросить ProductSoldList
Стол и знайте, к какому лидеру присоединиться к:
SELECT *
FROM [ProductSoldList] PL
INNER JOIN [Organization] O
ON PL.LeadSourceID = O.ID AND
PL.LeadSourceType = 1
INNER JOIN [Company Office] CO
ON PL.LeadSourceID = CO.ID AND
PL.LeadSourceType = 2