Скажем, у меня есть таблица со следующей раскладкой:
Id Int PRIMARY KEY IDENTITY
DateFrom datetime NOT NULL
DateTo datetime NOT NULL
UserId Int
UserId - это внешний ключ к таблице пользователей, и, очевидно, есть еще данные, которые не имеют отношения к этому вопросу.
Что я хочу сделать, это убедиться, что для каждого пользователя не может быть никаких перекрывающихся «периодов», то есть, скажем, у нас есть ряд данных для пользователя 1, с 15 мая 2009 по 18 мая мая 2009 года, тогда в базе данных не может быть никаких других строк, содержащих какие-либо из этих дат (15-18 мая 2009 года, включая обе даты).
Как бы я поступил так лучше? Вначале я думал о том, чтобы использовать триггеры, но я не совсем уверен, как и / или есть ли более эффективный способ проверки данных, как этот?