Как создать внешний ключ в 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

См вложения. Я надеюсь, что это может быть полезно для всех.