MYSQL: два поля как ПЕРВИЧНЫЕ КЛЮЧИ + 1 поле как УНИКАЛЬНЫЙ, вопрос - PullRequest
2 голосов
/ 27 июня 2011

У меня есть два основных (составных) ключа, которые относятся к магазину и филиалу.Я подумал, что должен был использовать соответствующий идентификатор для каждой строки, поэтому я добавил UNIQUE + AUTO_INCREMENT с именем ID.

Поэтому у меня в таблице был столбец с именем ID (AUTO INCREMENT), но он был объявлен PRIMARY -это было сделано автоматически, и я не хочу, чтобы идентификатор был первичным.Просто магазин и филиал.

Я научился обманывать MYSQL, чтобы принимать поле идентификатора как UNIQUE и AUTO INCREMENT, поскольку создание AUTO_INCREMENT было не совсем тривиальным (оно хотело сделать его ПЕРВИЧНЫМ).Мне пришлось стереть поле идентификатора (по какой-то причине оно не позволило мне стереть его ПЕРВИЧНЫЙ индекс), затем объявить его ИНДЕКС, и только затем АВТОМАТИЧЕСКОЕ УВЕЛИЧЕНИЕ.

Это хороший подход?Может ли быть что-то, что я делаю неправильно с этим дизайном?

Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Преобладающая мудрость заключается в том, что каждая таблица должна иметь уникальный автонумерованный столбец с именем Id.

В классическом моделировании данных, разработанном Codd and Date, поле ID не обязательно для полной логической модели данных.

Что хорошего в поле идентификатора? Вы когда-нибудь ссылались на строку в этой таблице по ее идентификатору? Если никогда, то просто оставь поле. (магазин, филиал) предоставили отличную кандидатуру для ПК.

0 голосов
/ 27 июня 2011

Как выглядело ваше create table заявление? Потому что я представляю это:

CREATE TABLE foo (
    IDCol int not null auto_increment,
    shop int not null,
    branch int not null,

    /* ... */

    UNIQUE KEY IDCol (IDCol),
    PRIMARY KEY (shop, branch)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...