2015-01-20 3 views
0

В настоящее время я разрабатываю небольшой CRM для своего собственного использования в бизнесе, однако, когда я прихожу к дизайну базы данных, я немного зациклен, как его проектировать.Настройка базы данных для небольшого приложения для управления клиентами

Мне нужно, чтобы он быстро загружался, не нагружая сервер или клиентскую сторону.

Вот категорий мне нужно

  1. Заказчик:
    • Имя
    • Адрес
    • Телефон No.
  2. визит:
    • Лечение Стадия
    • Лечение Тип
    • Лечение Дата
    • Имя клиента (Вытащите из таблицы Customer?)
  3. Назначение:
    • Назначение Тип
    • Назначение Дата
    • Замечания
    • Имя клиента (Вытянуть из таблицы клиентов?)
  4. Сделка:
    • Тип транзакции
    • Transaction Дата
    • Транзакция Замечания
    • имени клиента (Вытащите из таблицы Customer?)

Если скажем я хотел бы получить те клиенты, которые не посещают меня больше года, мне нужно добавить таблицу в гости? Или просто используйте тип запроса SQL, чтобы сделать листинг?

Ваш совет высоко ценится.

Спасибо, Дженнифер

+0

Вы можете достичь такого рода отчета по SQL Query. [этот пост] (http://stackoverflow.com/a/1415448/2627842) может быть вам полезен. –

+0

@ArifulHaque означает, что я могу использовать вышеуказанный план, а затем просто использовать ваш SQL-запрос комментариев, чтобы получить соответствующие данные, как я хочу, правильно? –

+0

Да, вы можете! Я считаю, что ваш вышеприведенный план показывает текст здесь. Вам необходимо установить 'primary_key' для каждой таблицы _ (например, customer_id_ для таблицы Customer) и в таблице посещений вы должны установить связь с таблицей Customer, используя' customer_id' как 'foreign_key' здесь. Стол посещений также должен иметь свою «primary_key», например. visit_sn _ Надеюсь, он заставит вас это понять. –

ответ

0

Не уверен, что если вы спрашиваете, является ли ваша схема хорошо или как получить нужную информацию, так вот как:

Я бы обновить вашу схему к этому:

клиентов (p_key = CustomerId)

  • CustomerId (интермедиат)
  • FirstName (VARCHAR)
  • LastName (VARCHAR)

Телефон (p_key = CustomerId, PHONETYPE, DateEffective) Клиенты могут иметь несколько типов телефонов (мобильный, домашний, рабочий) и может дать вам кратные те (получили новый номер). Вы можете либо перезаписать, либо сохранить историю с помощью DateTime, номер стал эффективным.

  • CustomerId (интермедиат)
  • PHONETYPE (VARCHAR)
  • DateEffective (DateTime)
  • AreaCode (VARCHAR) - не использовать номера, если это возможно, чтобы начать с 0 по
  • PhoneNumber (VARCHAR) - не использовать номера, если это возможно, чтобы начать с 0 по

Адрес (p_key = CUSTOMERID, AddressType , DateEffective) Почтовые и физические адреса и история, например Телефон.

  • CustomerId (интермедиат)
  • AddressType (VARCHAR)
  • DateEffective (DateTime)
  • Street1 (VARCHAR)
  • Street2 (VARCHAR)
  • Город (VARCHAR)
  • State (varchar)
  • Zip (varchar) - не используйте числа, начиная с начала zip с 0

Лечение (p_key = TreamentId)

  • TreatmentId (INT)
  • Тип (VARCHAR)

TreatmentStage (p_key = TreamentId, Стадия)

  • TreatmentId (интермедиат)
  • Stage (INT)
  • Описание (VARCHAR)

Визит (p_key = все столбцы) Клиент может иметь несколько этапов обработки/лечения в тот же день.

  • CustomerId (интермедиат)
  • TreatmentId (интермедиат)
  • TreatmentStage (интермедиат)
  • DateVisit (DateTime)

Назначение (p_key = CustomerId, AppointmentDate, AppointmentTime) Вы могут сочетать AppointmentDate и AppointmentTime с AppointmentDateTime, хотя это не так, как большинство людей думают об этом.

  • Тип (VARCHAR)
  • AppointmentDate (дата)
  • AppointmentTime (время)
  • CommentID (интермедиат)
  • CustomerId (интермедиат)

Transaction (p_key = TransactionId)

  • TransactionID
  • Тип (VARCHAR)
  • TransactionTimestamp (DateTime)
  • CommentID (интермедиат)
  • CustomerId (интермедиат)

Комментарий (p_key = CommentID) Это получает ваш свободный формируйте текст из всех ваших других таблиц и централизуйте его в комментарии. Это будет с производительностью, так как большую часть времени вам не нужно загружать комментарии плюс данные, вероятно, будут превышать размер страницы по умолчанию.

  • CommentID (интермедиат)
  • Комментарий (VARCHAR)

Код (p_key = CodeType, код)

  • CodeType (VARCHAR)
  • Код (VARCHAR)
  • CodeDescription (varchar)

В таблице кодов должны храниться ваши «Типы» (тип распределения, тип транзакции, тип телефона и т. Д.), Поэтому у вас есть список кодов, их описания, и вы можете использовать это в критериях присоединения, если необходимо (отчетность) ,

Часть запроса довольно прямо вперед:

SELECT c.* 
FROM Visit v 
INNER JOIN Customer c 
on v.CustomerId = c.CustomerId 
WHERE v.DateVisit > DATE_ADD(NOW(), INTERVAL 1 YEAR) 
Смежные вопросы