Как создать отношения в MySQL

89
задан Community 31 May 2019 в 06:33
поделиться

4 ответа

Если таблицы являются innodb, можно создать его как это:

CREATE TABLE accounts(
    account_id INT NOT NULL AUTO_INCREMENT,
    customer_id INT( 4 ) NOT NULL ,
    account_type ENUM( 'savings', 'credit' ) NOT NULL,
    balance FLOAT( 9 ) NOT NULL,
    PRIMARY KEY ( account_id ), 
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 
) ENGINE=INNODB;

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

94
ответ дан Eric Hogue 24 November 2019 в 07:15
поделиться

как ehogue сказал, поместите это в свой CREATE TABLE

FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 

альтернативно, если Вам уже создали таблицу, используйте команду ALTER TABLE:

ALTER TABLE `accounts`
  ADD CONSTRAINT `FK_myKey` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Один хороший способ начать изучать эти команды использует MySQL GUI Tools , которые дают Вам более "визуальный" интерфейс для работы с Вашей базой данных. Реальная выгода для того (по методу Доступа), то, что после разработки Вашей таблицы через GUI, это показывает Вам SQL, который это собирается выполнить, и следовательно можно извлечь уроки из этого.

75
ответ дан nickf 24 November 2019 в 07:15
поделиться

Добавляя на комментарий ehogue, необходимо сделать размер ключей на обоих соответствиях таблиц. Вместо

customer_id INT( 4 ) NOT NULL ,

делают его

customer_id INT( 10 ) NOT NULL ,

и удостоверяются, что Ваш международный столбец в потребительской таблице международный (10) также.

10
ответ дан Zak 24 November 2019 в 07:15
поделиться

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

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

, Например, в запросе Вы связываете две таблицы в избранном операторе с соединением:

SELECT a, b from table1 LEFT JOIN table2 USING (common_field);
7
ответ дан Gary Richardson 24 November 2019 в 07:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: