Можно ли удалить идентификатор, если он не используется? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть таблица со следующей структурой

CREATE TABLE Products (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
code VARCHAR(30) NOT NULL UNIQUE,
warranty TINYINT(1) NOT NULL,
producing_country VARCHAR(50),
)

Каждый продукт в моей таблице имеет уникальный код, и этот продукт также известен на складе как эти коды

Коды являются чем-то вродеэто: (AR-X22, RF-3654, ...)

Мой вопрос: могу ли я удалить идентификационную ошибку в этой таблице? Потому что у него нет специального приложения

И больно, если я хочу использовать столбец кода вместо идентификатора в соединении?

Ответы [ 3 ]

1 голос
/ 30 сентября 2019

Рекомендуется иметь таблицу с идентификатором INT AUTO_INCREMENT и PRIMARY KEY.

Это гарантирует, что каждая строка уникальна. Если другие программисты придут и посмотрят на вашу таблицу, они ожидают увидеть столбец идентификатора.

Наличие VARCHAR в качестве уникального ключа строки вызывает проблемы. Существуют всевозможные проблемы кодирования и другие вещи, которые могут сделать строки в качестве идентификаторов ненадежными.

Например: «ABX-112» и «ABX -112» (пространство там спрятано)

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

Удачи.

1 голос
/ 30 сентября 2019

Ваш столбец id указан как ваш PK, что означает, что он используется для уникальной идентификации этой строки в вашей таблице. Похоже, это поле типа идентификатора, которое должно позаботиться о требовании уникальности.

Если вы хотите использовать code в качестве своего нового поля "id", это будет хорошо, пока вы делаетеуверен, что это уникальное значение при добавлении строк. Это не должно влиять на объединения, если вы обновляете другие таблицы для использования нового поля code.

Я не знаю, как легко работать с PK на столе, который ужеесть данные. Лучше всего создать новую таблицу без поля id и заполнить ее данными текущей таблицы.

Если вам просто не нужно видеть / иметь дело с полем idВы никогда не используете, вы всегда можете создать представление и исключить это поле из списка.

0 голосов
/ 30 сентября 2019

Насколько я понимаю, вы хотите удалить Id из таблицы и хотите использовать Product code в этом месте.

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

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

Это также будет работать, если вы не создадите столбец с первичным. Спасибо.

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