SQL для реляционной алгебры - PullRequest
2 голосов
/ 21 июня 2010

Как мне написать реляционную алгебру для этого SQL-запроса?

Select patient.name, 
       patient.ward, 
       medicine.name, 
       prescription.quantity, 
       prescription.frequency
From patient, medicine, prescription
Where prescription.frequency = "3perday" 
  AND prescription.end-date="08-06-2010" 
  AND canceled = "Y"

Отношения ...

рецепт

  • рецепт-реф
  • пациент-реф
  • медицина-реф
  • количество
  • частота
  • дата окончания
  • отменено (Да / Нет))

лекарство

  • лекарство-ссылка
  • имя

пациент

  • Пациент-реф
  • имя
  • палата

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

Примером может быть что-то вроде следующего. Это только в том случае, если вы случайно пропустили соединение между пациентом, лекарством и рецептом Если нет, то вы будете искать перекрестный продукт (который кажется плохой идеей в данном случае ...), как упомянуто Ломбо. Я привел пример объединений, которые могут соответствовать вашим таблицам, помеченным как «???». Если бы вы могли включить макет ваших таблиц, это было бы полезно.

Я также предполагаю, что отменено происходит по рецепту, так как он не имеет префикса.

Редактировать: если вам это нужно в стандартной форме RA, это довольно легко получить из диаграммы.

альтернативный текст http://img532.imageshack.us/img532/8589/diagram1b.jpg

3 голосов
/ 21 июня 2010

Я просто укажу вам операторов, которых вы должны использовать

Проекция (π)

π (a1, ..., an): результат определяется как набор, который получается, когда все кортежи в R ограничены набором {a1, ..., an}.

Например, π (имя) в вашей таблице пациентов будет таким же, как SELECT имя ОТ пациента

Выбор (σ)

σ ( условие ): выбирает все те кортежи в R, для которых выполняется условие .

Например, σ (quency = "1perweek") в таблице рецептов будет таким же, как SELECT * FROM предписания WHERE частота = "1perweek"

Перекрестное произведение (X)

R X S: Результатом является перекрестное произведение между R и S.

Например, рецепт пациента X будет SELECT * ИЗ пациента, рецепт

Вы можете объединить эти операнды для решения вашего упражнения. Попробуйте опубликовать вашу попытку, если у вас есть какие-либо проблемы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...