powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / CONSTRAINT na 2 tablici
9 сообщений из 9, страница 1 из 1
CONSTRAINT na 2 tablici
    #33924343
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dobrij denj.

Problema sledusjushaja: Estj tablici Objects i Resources

Objects:
pk,
parent_pk

Resource:
pk,
name

pri etom svjazj odin k odnomu po polju "pk" (Objects 1:1 Resources)

do ku4i parent_pk v Objects ukazivaet na roditelja (hozjaina).

vopros:

kakoj napisatj CONSTRAINT v Resources, 4tobi neljzja bilo sozdatj dva Resource s odinakovim imenem u odnogo i togo zhe roditelja,
t.e. UNIQUE (Object.parent_pk, Resource.name) ?
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33924496
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
inimi slovami :
vetka odnogo dereva ne mozhet xranitj dva Resource`a s odinakovim imenem.
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33924570
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно
1. написать триггер, в котором вызывать исключение при нарушении условий
2. написать ф-ю, с булевым возвратом, и задать ее в чеке.

3. на фига нам уникью - не приложу.

и ващще связь 1-1 (в начале конструирования) как правило заводится от большого ума. а не по необходимости. (ибо, при отсутствии индексов на вьюхи, вы огребаете кучку некоторых проблем с выборками). другое дело, если вы строити звизду, паскоку вам не нравится реализованное в ПГ наследование. (или вы чешете себя мыселью о потенциальной переносимости звезды, при непереносимости ПГ-ной)
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33924721
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vob4emto tam kakraz zvezda, i PG uzaetsja v svjazke s HIBERNATE`om, a takoj konstraint - sugubo bisness rule. Spasibo.
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33931233
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyBondVob4emto tam kakraz zvezda, i PG uzaetsja v svjazke s HIBERNATE`om, a takoj konstraint - sugubo bisness rule. Spasibo.

Нихрена не понимаю на транслите, но так понимаю, нужно вот это?

CREATE UNIQUE INDEX "resource_idx_pk_name" ON "resource"
USING btree ("pk", "name");

ALTER TABLE "resource"
ADD CONSTRAINT "resource_fk_pk" FOREIGN KEY ("pk")
REFERENCES "objects"("pk")
ON DELETE RESTRICT
ON UPDATE NO ACTION
NOT DEFERRABLE;

Правда необходимо еще одно условие pk и name - NOT NULL. А то констрейнт уникальности не будет работать, если хоть одно из них NULL.
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33931704
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin PahanНихрена не понимаю на транслите, но так понимаю, нужно вот это?

Код: plaintext
1.
CREATE UNIQUE INDEX "resource_idx_pk_name" ON "resource"
  USING btree ("pk", "name");

Правда необходимо еще одно условие pk и name - NOT NULL. А то констрейнт уникальности не будет работать, если хоть одно из них NULL.гыгыгы. pk - первичный ключ обоих таблиц. т.ч. здорово ваше уникью там сработает . Особливо - про требование Not NULL для Primary Key - хорошо пошло.

переведу с телепятцкага на обще-доступный.
1. есть таблица узлов дерева категорий (центральная таблица звезды) pk - Праймери, parent_pk - ссылка на вышестоящую категорию.
2. есть одна из таблиц объектов (категорий некоего подвида) - представленных в таблице узлов своими ключами (pk) pk - праймери и для нее. Т.е. связь 1-1.
3. Нужно (не мне, а в задаче), чтобы на _родительской_ (parent_pk) ветке центральной таблы сидело не более 1-го одноименного представителя 2-й таблицы.
и тут выходите вы, весь в белом...
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33933489
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 Kruchinin PahanНихрена не понимаю на транслите, но так понимаю, нужно вот это?

Код: plaintext
1.
CREATE UNIQUE INDEX "resource_idx_pk_name" ON "resource"
  USING btree ("pk", "name");

Правда необходимо еще одно условие pk и name - NOT NULL. А то констрейнт уникальности не будет работать, если хоть одно из них NULL.гыгыгы. pk - первичный ключ обоих таблиц. т.ч. здорово ваше уникью там сработает . Особливо - про требование Not NULL для Primary Key - хорошо пошло.

переведу с телепятцкага на обще-доступный.
1. есть таблица узлов дерева категорий (центральная таблица звезды) pk - Праймери, parent_pk - ссылка на вышестоящую категорию.
2. есть одна из таблиц объектов (категорий некоего подвида) - представленных в таблице узлов своими ключами (pk) pk - праймери и для нее. Т.е. связь 1-1.
3. Нужно (не мне, а в задаче), чтобы на _родительской_ (parent_pk) ветке центральной таблы сидело не более 1-го одноименного представителя 2-й таблицы.
и тут выходите вы, весь в белом...
Теперь внимательно разглядываем CREATE, и учимся если хотя бы не уважать собеседника, так внимательно читать, что предлагается. UNIQUE накладывается отнюдь не на PK, а вовсе на ("pk", "name"). И NOT NULL предлагается навесить и на PK (где оно и так есть), и на NAME, в противном случае значение составного индекса будет NULL и контроль уникальности производиться не будет.
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33934197
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin PahanТеперь внимательно разглядываем CREATE,я к этому вас и призвал . + подумать. (но это вам, как вижу, не удалось)
Kruchinin Pahanи учимся если хотя бы не уважать собеседника, так внимательно читать, что предлагается. UNIQUE накладывается отнюдь не на PK, а вовсе на ("pk", "name"). И NOT NULL предлагается навесить и на PK (где оно и так есть), и на NAME, в противном случае значение составного индекса будет NULL и контроль уникальности производиться не будет.а фули уго уважать, если он себя не уважает. ему уже сотый раз объясняют, что нужен уникью на (parent_pk,name) (т.е. на поля 2-х разных таблиц), а он все лезет со своими глупостями (не дав себе труда разобраться, что предлагает именно и только глупость)

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



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

и будет нулл в нейме, или не будет нулл в нейме - пк таблицы то уникальный. или вы умеете создавать не уникальные пк? если да - поделитесь сакральным. мы, невнимательные, поучимся у вас невозможному.
...
Рейтинг: 0 / 0
CONSTRAINT na 2 tablici
    #33957196
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321а фули уго уважать, если он себя не уважает. ему уже сотый раз объясняют, что нужен уникью на (parent_pk,name) (т.е. на поля 2-х разных таблиц), а он все лезет со своими глупостями (не дав себе труда разобраться, что предлагает именно и только глупость)

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



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

и будет нулл в нейме, или не будет нулл в нейме - пк таблицы то уникальный. или вы умеете создавать не уникальные пк? если да - поделитесь сакральным. мы, невнимательные, поучимся у вас невозможному.

Логично. Рассмотрел повнимательнее первое сообщение, оказывается, там объяснение самое полное, тока нерусское. По существу заданных вопросов могу сказать, что накладывать правила на денормализованную структуру - полный кретинизм.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / CONSTRAINT na 2 tablici
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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