powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / И снова структура.....???
8 сообщений из 8, страница 1 из 1
И снова структура.....???
    #33328471
valik_marchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня!
Вопрос в следующем есть табличка фирма, необходимо во времени отслеживать измене записей то есть знать что а понедельник у фирмы было одно название а во вторник другое, а в среду узнать название фирмы которое было в понедельник.
Вот как это реализовано сейчаз
табличка t_Firm
CREATE TABLE [t_Firm] (
[cdFirm] [int] NOT NULL ,
[dt_Update] [smalldatetime] NOT NULL ,
[Nm] [nvarchar] (255) NULL ,
CONSTRAINT [PK_Firm] PRIMARY KEY CLUSTERED
(
[cdFirm],
[dt_Update]
) ON [PRIMARY] )
Все казалось бы нормально но сделать связь по cdFirm не получается, приходится писать триггер для подержания связи!
Как посоветуете выйти из данной ситуации!
...
Рейтинг: 0 / 0
И снова структура.....???
    #33328541
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам вообще нужно знать изменения (в виде лога), или где-то показывать информацию по ним в зависимости от даты?

-- Tygra's --
...
Рейтинг: 0 / 0
И снова структура.....???
    #33328608
valik_marchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygraВам вообще нужно знать изменения (в виде лога), или где-то показывать информацию по ним в зависимости от даты?

НЕ в виде лога, а делать по ним выборки, в том числе изменять данные.
...
Рейтинг: 0 / 0
И снова структура.....???
    #33328845
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно держать изменения в отдельной таблице - как поменяли, писать туда измененные данные, по ней и селекты делать.

Тогда и PK на главной таблице нормальным будет, и все остальное получится.
Я бы так сделал.

-- Tygra's --
...
Рейтинг: 0 / 0
И снова структура.....???
    #33332665
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valik_marchenko
В теории это делается так (по крайней мере в той теории, которую я читаю как курс Warehouse Database Design):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table Clients (
   2     Client_Id integer not null,
   3     Client_Record_Id integer not null,
   4     Client_Name varchar2( 2000 ),
   5     Date_From date not null,
   6     Date_To date,
   7     constraint Clients_PK primary key (Client_Record_Id),
   8     constraint Clients_AK unique (Client_Id, Date_From),
   9     constraint Clients_DateRange check (Date_From <= coalesce (Date_To, Date_From)))
  10   ;

Ну и дальше по ситуации - большинство ссылок используют Clients_PK, некоторые используют Clients_AK, некоторые хранят только Client_Id и ищут запись на момент даты X из приджойненных.
...
Рейтинг: 0 / 0
И снова структура.....???
    #33332680
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra
В этом случае часто оказывается, что в главной таблице кроме первичного ключа ничего и нет :)

Так можно и нужно делать, либо если есть "неисторичная" часть данных, либо если хранить в главной таблице текущее состояние (то есть денормализация для ускорения выборки, например поиска по реквизитам).
...
Рейтинг: 0 / 0
И снова структура.....???
    #33333243
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ теории это делается так (по крайней мере в той теории, которую я читаю как курс Warehouse Database Design):
"- Батюшка, Вам коньяк или водочку?
- И пиво тоже!"
...
Рейтинг: 0 / 0
И снова структура.....???
    #33333267
valik_marchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer valik_marchenko
В теории это делается так (по крайней мере в той теории, которую я читаю как курс Warehouse Database Design):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table Clients (
   2     Client_Id integer not null,
   3     Client_Record_Id integer not null,
   4     Client_Name varchar2( 2000 ),
   5     Date_From date not null,
   6     Date_To date,
   7     constraint Clients_PK primary key (Client_Record_Id),
   8     constraint Clients_AK unique (Client_Id, Date_From),
   9     constraint Clients_DateRange check (Date_From <= coalesce (Date_To, Date_From)))
  10   ;

Ну и дальше по ситуации - большинство ссылок используют Clients_PK, некоторые используют Clients_AK, некоторые хранят только Client_Id и ищут запись на момент даты X из приджойненных.

Спасибо, мне это и надо было, не учел возможности constraint unique!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / И снова структура.....???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]