Обновление таблиц связывания - PullRequest
0 голосов
/ 01 октября 2009

В настоящее время я добавляю немного функциональности, которая управляет отпуском в отпуск, поверх CMS, работающей на PHP и MySQL.

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

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

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 01 октября 2009

Вот моя рекомендация для таблицы LETTING_TIMES:

  • PROPERTY_ID, рк & фк
  • EFFECTIVE_DATE, рк, ДАТА, не нуль
  • EXPIRY_DATE, ДАТА, не нуль

Установка pk в качестве составного ключа (PROPERTY_ID и EFFECTIVE_DATE) позволяет вам иметь более одной записи для данного свойства, не давая им находиться в один и тот же день. Нет простого способа предотвратить перекрытие [sub?] Let, но это избавило бы от необходимости удалять все моменты времени, содержащиеся для свойства, и повторного добавления.

...