2015-09-29 3 views
0

Я работаю над приложением для нашего офиса, и перед тем, как начать писать эту часть приложения, мне нужно получить некоторые идеи о том, как лучше структурировать свои данные. Приложение позволит команде продаж ввести оценку и предоставить ее клиенту. Если клиент принимает оценку, он становится заданием и назначается на соответствующий день. Мне нужна структура, которая позволяет мне исторически видеть оценку в ее исходном состоянии, но допускать заказы на изменение после того, как оценка станет заданием. По завершении работы мне нужно будет увидеть всю работу, включая все заказы на изменение.Таблицы структурирования для оценок и вакансий

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

Может, кто-нибудь прольет какой-то свет в этом свете для меня, пожалуйста?

Образец Состав:

enter image description here

+0

Есть ли у вас какие-либо схемы? Если это так, было бы неплохо, если бы вы могли это показать. Кроме того, почему вы думаете, что ваш дизайн плох? Выполняли ли вы какие-либо измерения? –

+0

Также зависит от того, что существенно отличается между циклом заказа оценки - задания - изменения. Вы могли бы структурировать его как одну таблицу, а запись оценки будет скопирована с новым «type_id», чтобы стать заданием. Но дает ли вам достаточный аудиторский след? –

ответ

0

То, что вы хотите, это способность отслеживать изменения в вашей организации от первоначального создания до конечного состояния. Вам также нужно «оглянуться», чтобы увидеть объект, как он существовал в любое конкретное время в прошлом.

Легко. Хотя и не совсем просто. Вам нужна версия для ваших данных. Я упомянул о версировании в нескольких ответах, поэтому вместо того, чтобы повторить довольно длинный ответ, позвольте мне просто направить вас к паре.

https://dba.stackexchange.com/questions/114580/best-way-to-design-a-database-and-table-to-keep-records-of-changes/114738#114738

Which option would be better for historical information of a table?

К сожалению из-за отсутствия деталей здесь, но ваш вопрос был очень общий характер.

Update: Там нет ничего в оценки, которые изменяются с течением времени (хотя я не понимаю, почему он нуждается в информации об адресе), поэтому он должен быть estimate_details вы хотите сохранили в течение долгого времени. Но я не могу сказать, есть ли несколько подробностей для оценки. На диаграмме показано соотношение 1: n, поэтому я пойду с этим.

Лучше всего было бы поместить другой объект, скажем, торги между оценки и estimate_details:

create table bids(
    estimate_id int not null, 
    eff_date  date not null default current_date(), 
    ..., 
    constraint PK_Bids primary key(estimate_id, eff_date), 
    constraint FK_Bids_Estimate foreign key(estimate_id) 
     references estimates(ID) 
); 
create table estimate_details(
    bid_id   int not null, 
    eff_date  date not null, 
    product_id  int not null, 
    quantity  float, 
    constraint PK_Estimate_Details primary key(bid_id, eff_date, product_id), 
    constraint FK_EstimateDetail_Bid foreign key(bid_id, eff_date) 
     references bids(estimate_id, eff_date) 
); 

Я предполагаю, что здесь, что никакие две детали не будут касаться того же продукта. Другие ставки данные могут включать дату, когда она была отправлена ​​клиенту, общая стоимость, дата ответа клиента и принята ли ставка.

При создании оценки первая ставка также создается с тем же идентификатором, что и оценка и дата вступления в силу, что может быть началом работы с датой, указанной в сметной или другой значащей дате. Подробная ссылка на заявку с использованием идентификатора сметы и даты ставки. Затем ставка заканчивается и представляется клиенту. Клиент отклоняет так, что создается новая ставка - тот же идентификатор, другая дата. Новая ссылка на эту заявку.

Может быть любое количество ставок каждый с любым количеством деталей.Вы можете запросить любую оценку в любое время, просто получив заявку на дату, на которую вы хотели посмотреть, и получить информацию, связанную с этой ставкой.

Я также предполагаю, что каждая новая заявка начинается с чистого листа - что никакие данные не переносятся, чтобы применить неизмененные к новой ставке. Если это неверно, если вы хотите повторно использовать некоторые детали из ставки для участия в торгах, то небольшое изменение может устранить необходимость дублирования этих деталей между ставками.

+0

Спасибо за ответ @TommCatt, я читаю PDF, с которым вы связались в одном из своих других ответов. То, что я считал простым, может быть не таким простым. Разве это не всегда так, как всегда? Один быстрый вопрос. Будет ли такое управление версиями позволить мне использовать одну таблицу для оценок, рабочих мест и счетов-фактур? Я могу изменить статус и сделать его текущей версией. Правильно ли понимаю концепцию? – mack

+0

Если «оценка», «задание» и «счет-фактура» представляют одни и те же данные, просто другую фазу или статус, то да, вы можете их комбинировать. Если они вообще представляют разные сущности, то нет, они должны оставаться отдельными. Тем не менее, вы можете использовать различные таблицы по мере необходимости и присоединяться к ним в запросе, чтобы получить полную картину. В pdf есть примеры. Добавьте сведения о структурах таблиц к вашему вопросу, и я могу расширить свой ответ. – TommCatt

+0

Спасибо @TommCatt. Я добавил образец таблицы. Он не включает все необходимые поля, но, надеюсь, иллюстрирует, где я собираюсь с ним. Я не администратор базы данных по какой-либо части воображения, поэтому, если этот макет полностью тупой, пожалуйста, дайте мне знать. :) Оценки должны быть изменчивыми, но задания и счета-фактуры не должны изменяться, кроме как путем добавления заказа на изменение. – mack

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