powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как гарантировать наличие атрибута (циклическая зависимость)
7 сообщений из 32, страница 2 из 2
Как гарантировать наличие атрибута (циклическая зависимость)
    #35488468
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L wrote:

> 3) некоторые СУБД делают отложенную проверку FK, во время коммита,
> там вообще просто всё.
>
> Между прочим, это нарушение 2-го принципа ACID ;-)

Ни коим образом. Всё производится в одной транзакции.
Вообще, все действия внутри транзакции могут производится
в любом порядке, это ни на что не должно влиять.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35541140
123_лор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а нужно-ли выносить например адрес клиента в другую таблицу ? Т.е. должен-ли клиент иметь ссылку на таблицу с адресами, или можно прямо в самом клиенте перечислить город, улицу и дом с квартирой ? (конечно сами города и улицы могут лежать в отдельном месте)
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35542369
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123_лора нужно-ли выносить например адрес клиента в другую таблицу ? Т.е. должен-ли клиент иметь ссылку на таблицу с адресами, или можно прямо в самом клиенте перечислить город, улицу и дом с квартирой ? (конечно сами города и улицы могут лежать в отдельном месте)

Лучше, конечно, вынести. Ибо адресов у клиента тоже может быть много. И все - действующие.
Примерно так:

Клиент - АдресКлиента - Адрес (с городами, улицами и пароходами).
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35543513
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1Ибо адресов у клиента тоже может быть много. И все - действующие
Может быть еще хуже, когда один адрес у нескольких клиентов.
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35545379
123_лор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если адрес только один ?
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35546026
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123_лора если адрес только один ?А если нет?
...
Рейтинг: 0 / 0
Как гарантировать наличие атрибута (циклическая зависимость)
    #35546542
Ennor Tiegael
Если же отложенная проверка не поддерживается, то можно перевернуть схему с ног на голову, примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table Passports (Id int primary key);

create table Clients(
Id int primary key,
PassportId int not null unique
);

alter table Clients add constraint FK_Clients_PassportId foreign key (PassportId) references Passports (Id);



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> alter table Clients add constraint FK_Clients_PassportId foreign key (PassportId) references Passports(id) deferrable initially deferred;
 
Table altered

insert into clients
  (id)
values
  ( 1 );

cannot insert NULL into ("SCHEMA"."CLIENTS"."PASSPORTID")

Так что нужно отложенным констреинтом делать не внешний ключ, а not null.
Не вставлять же всякий бред в поле PassportId, только чтобы ограничние not null не сработало.
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как гарантировать наличие атрибута (циклическая зависимость)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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