2016-03-14 4 views
0

У меня есть таблица, чтобы проверить, если пользователь с конкретным адресом внутрибрюшинны номинальным на элементе или нет с этими столбцами: rates(ip,item_id,created_at) я могу определить два первичных ключ для этой таблицымоей таблице не нужен первичный ключ, следует ли использовать его?

1- первичного (IP, item_id)

2 - первичный (идентификатор)

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

+0

Да. 1 - ваш ПК – Strawberry

ответ

1

Следует использовать первичный ключ. Как сказал ctrahey, если комбинации должны быть уникальными, используйте опцию №1, если не использовать # 2 (с дополнительным столбцом).

1

В целом, дизайн как для будущего, так и для сегодняшнего дня. У вас есть очень естественный составной первичный ключ, если вы не сможете или никогда не сможете оценивать предмет более одного раза, и в этом случае вы должны ввести столбец идентификатора.

1

Посмотрите на статьи WHERE в вашем SELECTs. Это быстрый и (очень) грязный способ увидеть, что нужно индексировать.

У вас должно быть PRIMARY KEY. Он должен быть уникальным. Это может быть либо «естественный» ключ, если вы не хотите дублировать значения ip, что является хорошим кандидатом. Если у вас нет «натурального» ПК, у вас есть AUTO_INCREMENT.

У вас не может быть двух PRIMARY KEYs, но один ПК может иметь две колонки.

Cookbook on building indexes.