Как внешний ключ указывает на составной первичный ключ? - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть таблица Login, в которой есть поля логина и пароля.Оба являются первичными ключами.

И у меня есть таблица символов.Какой логин может иметь много символов.Так как же работает внешний ключ?

Как создать внешний ключ внутри таблицы символов для входа в систему?

Должен ли я создать 2 поля в качестве внешних ключей внутри таблицы символов для указания входа в систему?

Спасибо!

1 Ответ

3 голосов
/ 18 апреля 2011

Используйте следующее при создании таблицы или скрипте изменения:

create table character (
  field1 varchar(30),
  ...,
  login varchar(12),
  password varchar(128),
  foreign key (login, password) references login (login, password)
)

Теперь, как говорится, кажется странным включать пароль в ваш первичный ключ таблицы входа в систему. Я бы порекомендовал просто иметь первичный ключ в таблице входа в систему или, возможно, даже суррогатный ключ (целочисленный идентификатор). Используя подход, включающий логин и пароль, вы разрешите несколько регистраций под одним логином. Это может быть хорошо, но кажется, что вы действительно можете создать ситуацию, когда один пользователь случайно создает несколько учетных записей. Кроме того, это усложнит управление восстановлением утерянного пароля. Наконец, каждый раз, когда пароль изменяется (и пользователь может изменить его в любое время), его необходимо будет обновлять в каждом поле, на которое делается ссылка, и это значительно усложняет смену пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...