Что такое надлежащее соглашение о присвоении имен для MySQL FKs?

Быть этим, они должны быть уникальными, что я должен назвать FK в MySQL DB?

92
задан Zombies 10 February 2010 в 22:51
поделиться

1 ответ

В MySQL нет необходимости задавать символическое имя ограничениям внешнего ключа. Если имя не задано, InnoDB создает уникальное имя автоматически.

В любом случае, я использую следующее соглашение:

fk_[referencing table name]_[referenced table name]_[referencing field name]

Пример:

CREATE TABLE users(
    user_id    int,
    name       varchar(100)
);

CREATE TABLE messages(
    message_id int,
    user_id    int
);

ALTER TABLE messages ADD CONSTRAINT fk_messages_users_user_id 
    FOREIGN KEY (user_id) REFERENCES users(user_id);

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

Это соглашение об именовании позволяет мне "угадать" символьное имя, просто взглянув на определения таблиц, и, кроме того, гарантирует уникальность имен.

132
ответ дан 24 November 2019 в 06:31
поделиться
Другие вопросы по тегам:

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