powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Это PowerDesigner глючит или меня?
21 сообщений из 21, страница 1 из 1
Это PowerDesigner глючит или меня?
    #33389585
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю таблицу. Там указываю поле users как PK.
Это поле по совместительству у меня является внешним ключем.
Так этот PowerDesigner делает два идентичных индекса, один, указывая primary key по моему полю, другой, типа для внешнего ключа и по этому же полю.
Разве нельзя использовать один индекс?

Вот примерный код PowerDesigner-а:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create table user_state
(
   user_id                        int                            not null,
   pos_x                          tinyint                        not null,
   pos_y                          tinyint                        not null,
   primary key (user_id, pos_x, pos_y)
)
type = InnoDB;

create index user_id_FK
(
   user_id
);

alter table user_state add constraint FK_user_id foreign key (user_id)
      references user_data (user_id) on delete restrict on update restrict;

Так вот почему нельяз использовать PK, зачем делать еще user_id_FK ??
Причем я думал, может ему не нравится, что у меня PK по 3м полям, делал по одному "primary key (user_id)" не помогло.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33390049
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе ведь нужны два индекса. Вот два и создаётся. foreign key ведь хлеба не ест, вроде.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33390067
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем мне два _одинаковых_ индекса? У меня записей в этих таблицах ого-го.

В плане не ест?
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33390092
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том плане, что это чистая формальность. На первичный ключ создаётся бинарное дерево для ускорения поиска по этому первичному ключу, внешний ключ в такой байде не нуждается, т.к. логика там такая: "проверить, содержится ли такое значение в первичном ключе, на который ссылается этот вторичный ключ".
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33390241
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. так сказать физически индекс не строится?
А как тогда организовано слежение за целосностью? Т.е. если я хочу удалить родителя пока есть дочерние записи... он че без индекса их искать будет?
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33390471
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, ну так не нуждается и флаг ему, но вот это зачем
Код: plaintext
1.
2.
3.
4.
create index user_id_FK
(
   user_id
);

Это что формальность? Это ведь обычное построение индекса. Индекса, который у меня уже есть, как ПК.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33391734
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DivogТ.е. если я хочу удалить родителя пока есть дочерние записи... он че без индекса их искать будет?внешний ключ обязан ссылаться на первичный , вот по тому первичному и будет вестись (быстрый) поиск. В мане про ключи подробно не написано?
Divogвот это зачем
Код: plaintext
1.
2.
3.
4.
create index user_id_FK
(
   user_id
);
эта запись вообще смысла не имеет (вроде как), т.к. не понятно, откуда брать поле user_id.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33391906
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторэта запись вообще смысла не имеет (вроде как), т.к. не понятно, откуда брать поле user_id.
Ок.. вот так (PowerDesigner просто думает что будет брать из текущей таблицы. глючит короче его:) )
Код: plaintext
1.
2.
3.
create index user_id_FK ON my_table
(
   user_id
);

Суть в том.. что здесь создается индекс.. вопрос.. нах?

авторвнешний ключ обязан ссылаться на первичный, вот по тому первичному и будет вестись (быстрый) поиск. В мане про ключи подробно не написано?
Первичный это как бы родитель... и я _его_ удаляю.. следовательно должен пройти поиск по дочерним данным.. на предмет а нету ли там дочерних записей... Причем тут ПК (хотя это возможно реализокано какими-то внутренними механизмами, не знаю). Основной вопрос... нужен ли мне вот тот индекс?
Я просто не могу понять... или я чего-то недопонимаю и лучше поверить PD или его разработчики, мягко говоря... странные люди...
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392315
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DivogОк.. вот так (PowerDesigner просто думает что будет брать из текущей таблицы. глючит короче его:) )
Код: plaintext
1.
2.
3.
create index user_id_FK ON my_table
(
   user_id
);
это ты сам накропал или пд так пишет?

DivogПервичный это как бы родитель... и я _его_ удаляю.. следовательно должен пройти поиск по дочерним данным.. на предмет а нету ли там дочерних записей... Причем тут ПК (хотя это возможно реализокано какими-то внутренними механизмами, не знаю).четай чтиво или мануал.

DivogОсновной вопрос... нужен ли мне вот тот индекс?не знаю. Может, ты по нему где-нибудь поиск делаешь.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392349
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторне знаю. Может, ты по нему где-нибудь поиск делаешь.
Блин, зри первый постинг.
Не делаю я по нему поиск.. этот индекс ПД "создает" тогда когда я добавляю внешний ключ. Я предполагал, что он создает его для того чтобы поиск по дитям шел быстрее, но тогда неясно нафиг он его создает, если по этому полю уже есть индекс (ПК).

авторэто ты сам накропал или пд так пишет?

ПД пишет
Код: plaintext
1.
2.
3.
create index user_id_state_FK
(
   user_id
);
т.е вообще с ошибкой (для 4.1). Логично предположить, что он имеет ввиду
Код: plaintext
1.
2.
3.
create index user_id_state_FK ON current_table
(
   user_id
);

авторчетай чтиво или мануал.

ты походу меня не понял.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392365
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е вообще с ошибкой (для 4.1).
вот и я про то же.

Логично предположить, что он имеет ввиду
может, он ещё что-нибудь имеет в виду кроме этого? :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392547
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторможет, он ещё что-нибудь имеет в виду кроме этого? :)
Не знаю что он еще умеет иметь ввиду, но тут он именно это и имеет :) Поскольку больше ни в одной таблице нет такого поля.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392663
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ну?? alter table user_state add constraint FK_user_id foreign key (user_id) references user_data (user_id) on delete restrict on update restrict;
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392673
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может, он создаёт ключик для user_data, только забывает его туда вставить? :)
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392695
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот зачем нужно было читать мануал:
мануалInnoDB rejects any INSERT or UPDATE operation that attempts to create a foreign key value in a child table without a matching candidate key value in the parent table.то есть индекс нужен... почему не юзается первичный ключ - хз.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392769
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторда ну?? alter table user_state add constraint FK_user_id foreign key (user_id) references user_data (user_id) on delete restrict on update restrict;
Ну шо я прям с одним набором таблиц работаю? Специально переименовывал поочередно поля, проверял. Подставляет он туда имя поля текущей таблицы, а не какой-либо иной.

авторможет, он создаёт ключик для user_data, только забывает его туда вставить
Не-а. В user_data есть ПК, на который и ссылается ФК из текущей таблицы. Индекс он делает именно для текущей таблицы.

автор maXmoа вот зачем нужно было читать мануал:
[quot мануал]InnoDB rejects any INSERT or UPDATE operation that attempts to create a foreign key value in a child table without a matching candidate key value in the parent table.
И шо? Речь шла не об этом случае. Здесь, да, нужен "быстрый поиск" по родительской таблице.
Но я говорил о случае УДАЛЕНИЯ данных из _родительской_. В этом случае сначала должна пройти проверка а нет ли чего в дочерней (и вот тут уже нужен "быстрый поиск" по дочерней таблице).
Я ж говорю, ты меня не понял :)

авторто есть индекс нужен... почему не юзается первичный ключ - хз.
как ты сделал такой вывод? Хотя я сам к этому слоняюсь, но я не понял откуда такой вывод из приведенной цитаты мануала. Там речь о том что недопустимы значения, которых нет в родительской таблице.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392885
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DivogИ шо? Речь шла не об этом случае. Здесь, да, нужен "быстрый поиск" по родительской таблице.мусклю по барабану, для чего ты хочешь юзать внешний ключ, оба индекса должны быть созданы обязательно, иначе In older versions, the indexes must be created explicitly or the creation of foreign key constraints fails . Если напишешь лапками и не укажешь индекс, то Starting with MySQL 4.1.2, the index on the foreign key is created automatically - не можешь быть уверен, что индекс не создастся.
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33392913
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя все индексы должны бы выводиться в SHOW CREATE TABLE...
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33393007
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автороба индекса должны быть созданы обязательно
речь была не о том, хотя то уже не важно.
Я где-то так я и предполагал (что нужны оба индека и не "формальных", а реальных, о чем я вначале и говорил)... собсно тогда возвращаемся к первоначальному вопросу... нах там второй индекс? :)
Я так понял это ПД тупит, что не использует ПК, а создает второй такой же индекс?
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33393030
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда если по уму, то второй индекс не нужен... хехе, но мускуль об этом тоже может не знать :) хотя...
мануалIn the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Это PowerDesigner глючит или меня?
    #33393114
Divog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин.. тогда точно ПД тупит. Вот уж не ожидал...
Сенкс за помощь :)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Это PowerDesigner глючит или меня?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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