Как создать внешний ключ в phpmyadmin
Я хочу сделать врачом внешний ключ на моем столе пациента.
Итак, у меня созданы все мои таблицы - основная проблема заключается в том, что когда я перехожу в представление таблицы > структурa > отношение, появляется только первичный ключ, который я могу создать внешний ключ (и он уже является первичным ключом определенную таблицу, которую я хочу сохранить, т.е. пациент-пациент, может быть изменен, но у врача Id - у меня также таблица врача - не активирована).
У меня есть еще одна таблица с двумя составными клавишами (medicid и patientid), что позволяет мне изменять как
Нужно ли мне указывать индекс идентификатора врача в таблице пациентов на что-то еще? оба не могут быть первичными ключами, поскольку идентификатор пациента является основным для таблицы пациентов - врач является иностранным.
![table]()
Я надеюсь, что кто-то может помочь
С уважением
Ответы
Ответ 1
Вы можете сделать это старомодным способом... с оператором SQL, который выглядит примерно так:
ALTER TABLE table_name
ADD CONSTRAINT fk_foreign_key_name
FOREIGN KEY (foreign_key_name)
REFERENCES target_table(target_key_name);
Предполагается, что ключи уже существуют в соответствующей таблице
Ответ 2
Ключ должен быть проиндексирован для применения ограничения внешнего ключа. Для этого выполните шаги.
- Открыть структуру таблицы. (Вторая вкладка)
- См. последнее действие столбца, где есть варианты множественного действия. Нажмите Индекс, это приведет к индексированию столбца.
- Открыть представление отношения и добавить ограничение внешнего ключа.
Теперь вы можете назначить DOCTOR_ID как иностранный.
Ответ 3
При создании таблицы, которую вы можете дать следующим образом.
CREATE TABLE categories(
cat_id int not null auto_increment primary key,
cat_name varchar(255) not null,
cat_description text
) ENGINE=InnoDB;
CREATE TABLE products(
prd_id int not null auto_increment primary key,
prd_name varchar(355) not null,
prd_price decimal,
cat_id int not null,
FOREIGN KEY fk_cat(cat_id)
REFERENCES categories(cat_id)
ON UPDATE CASCADE
ON DELETE RESTRICT
)ENGINE=InnoDB;
и когда после создания таблицы создайте
ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;
Следуя примеру для него.
CREATE TABLE vendors(
vdr_id int not null auto_increment primary key,
vdr_name varchar(255)
)ENGINE=InnoDB;
ALTER TABLE products
ADD COLUMN vdr_id int not null AFTER cat_id;
Чтобы добавить внешний ключ в таблицу продуктов, вы используете следующий оператор:
ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;
Для удаления клавиши
ALTER TABLE table_name
DROP FOREIGN KEY constraint_name;
Надеемся на эту помощь, чтобы узнать, что работает FOREIGN key
Ответ 4
Чтобы иметь возможность создавать отношения, таблица Storage Engine должна быть InnoDB. Вы можете редактировать на вкладке Операции.
![Storage Engine Configuration]()
Затем вы должны быть уверены, что столбец id в главной таблице проиндексирован. Он должен появиться в разделе "Индекс" на вкладке "Структура".
![Index list]()
Наконец, вы можете увидеть опцию "Представление отношений" на вкладке "Структура". При редактировании вы сможете выбрать родительский столбец во внешней таблице для создания отношения.
![enter image description here]()
См вложения. Я надеюсь, что это может быть полезно для всех.