2012-02-28 5 views
0

Я разрабатываю систему назначения, которая имеет следующие таблицы (см. Прилагаемое изображение). Таблица tblScheduleDates имеет некоторые фиксированные даты для назначений в течение года, которые вводятся в начале года, например 28/02/2012,1/03/2012,4/3/2012 и т. Д., А в tblscheduleTimes Времена для этих назначений. Так, например, 28/02/2012 доступны 10: 00,11: 00,12: 00 и т. Д. Тблклинги - это когда назначается встреча с фиксированной датой, а фиксированное время и статус бронирования принимают значения забронированных или отменен. Я хочу попытаться написать хранимую процедуру, чтобы вернуть оставшиеся доступные даты и время из tblschedates и tblscheduleTimes. Поэтому я думаю, что фиксированные даты и время должны быть проверены, если они существуют в tblbookings, и если они не будут возвращены хранимой процедурой. Любые идеи или помощь приветствуются Database SchemaСохраненная процедура для возврата определенных строк

ответ

2

Связано ли ScheduleTime с ScheduleDates? Схема, насколько вам кажется, у вас будет либо много данных дубликатов, либо просто неправильные данные.

Похоже, что ваше отображение PK/FK времени до настоящего времени отображается неправильно. Тип ссылок указывает на время. Но, Scheduletimeid находится в запланированных?

Если значения прав:


SELECT tblScheduleDates.*, tblScheduleDates.* 
FROM tblScheduleDates 
    JOIN tblScheduleTimes 
     ON tblScheduleTimes.scheduleTimeID = 
      tblScheduleDates.scheduleTime_ID 
WHERE NOT EXISTS 
    (
     SELECT 1 
     FROM tblBookings 
      JOIN tblBookingStatus 
       ON tblBookingStatus.Status = 'Booked' 
     WHERE tblBookings.ScheduleDate_ID 
      = tblScheduleDates.scheduleDateID 
    ) 

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

Если ссылки на диаграмме справа:


Может быть, я что-то не хватает, но вот что я вижу:

В таблице бронирование только привязаны к scheduleddate. Однако эта запланированная дата имеет тип, связанный со временем. Разве это так, что у вас может быть тип, который является графиком на весь день? В противном случае каждый заказ на 28/02/2012 должен будет создать новую запись в SchedulDates. Итак, у вас может быть 5 строк за ту же дату, только потому, что у них разные времена? Я не вижу необходимости хранить дату 5 раз в разы, когда это действительно разные времена.

  • Почему бы не сделать заказ, связанный с планированием и планированием? Это также упростит ваш запрос.

  • Или у вас может быть таблица сопоставления, которая назначается datetime, которая связывает эти два вместе, и тогда вам нужно всего лишь ссылаться на одну таблицу в бронировании?

  • Или вы могли бы просто хранить дату и время вместе в одном столе?

Возможно, есть деловое основание, которое мне не хватает.

+0

В любом случае, я думаю, вы должны дать ответ в обоих случаях. По фактической диаграмме и диаграмме, если вы не отвечаете на вопрос ОФ –

+0

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

+0

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

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