Показать сообщение отдельно
  #10  
Старый 17.09.2016, 23:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А просто добавить дату как ключ нельзя?
Т.е.:
Код:
CREATE TABLE CompetitionList
(
CompetitionDate DATE,
CompetitionNum INTEGER,
HorseID INTEGER REFERENCES HORSES.ID,
JokkeyID INTEGER REFERENCES JOKKEYS.ID
...
);
тогда твоим первичным ключем будет пара вышеуказанных полей (CompetitionDate, CompetitionNum). Ну и выборку нужно будет делать с учетом даты. Список уникальных дат можно получить (в интерфейс, если надо) из этой таблицы так:
Код:
select distinct CompetitionDate from CompetitionList
ЗЗЫ. по поводу дублирования данных. Читаем о 3й нормальной форме. Естестенно, дублирования быть не должно (за исключением особых случаев денормальзации для облегчения построения отчетов). Соотв. в этой таблице просто ссылки на спортсменов/лошадей (см. выше). Кстати, и тут данная таблица денормалтзованна, но, в данном случае, это не так страшно, т.к. избыточное поле только дата. В идеале должна быть таблица, где перечисляются соревнования (id, дата + другая информация), а текущая таблицы просто должна ссылаться на ту, что бы получить ключ.
Ответить с цитированием