Как спроектировать отношения для вариантов данных?

dba.stackexchange https://dba.stackexchange.com/questions/5825

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top