Первичный ключ в БД в SQL - PullRequest
0 голосов
/ 05 ноября 2018

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

product_code (PK) ---------- varchar2 (5)

product_name --------------- varchar2 (15)

product_type --------------- varchar2 (1)

но я хочу сделать столбец автоинкремента идентификатора первичным ключом, а также доступ к нему в любых операциях CRUD. Могу ли я сделать это при наличии первичного ключа product_code? ... или столбец идентификатора здесь бесполезен ??

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Если вы получили требования, в которых указано, что ваш первичный ключ должен быть varchar2 (5) с именем product_code. Я бы порекомендовал следовать требованиям, не вижу практической причины возражать.

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

0 голосов
/ 05 ноября 2018

Только первичный ключ может быть автоматически сгенерирован в MySQL.

Создайте таблицу с новым автоматически созданным столбцом ID и сделайте существующий столбец PRODUCT_CODE уникальным, как в:

create table product (
  id int primary key not null auto_increment,
  product_code varchar(5) not null,
  product_name varchar(15) not null,
  product_type varchar(1),
  constraint uq_code unique (product_code)
);
0 голосов
/ 05 ноября 2018

Сделать product_id первичным ключом в виде столбца auto_increment.

Затем вы можете определить product_code как unique и not null.

Связи внешнего ключа должны использовать столбец product_id.

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