Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица отзывов / 14 сообщений из 14, страница 1 из 1
12.07.2010, 18:20
    #36736700
Таблица отзывов
Собираю отзывы из разных источников. Нужно хранить их в таблице.
Поля: 'produtcId' char(14), 'user' varchar(128), 'Source' varchar(128), 'content' text
Варианты использования:
Найти все отзывы о продукте

Вставить или обновить отзыв

Смущает второй пункт. По идее, только комбинация всех полей в таблице обеспечивает уникальность, но поиск по четырем текстовым полям смущает.
Вопрос: что использовать как первичный ключ?
...
Рейтинг: 0 / 0
12.07.2010, 19:44
    #36736852
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Китайский сварщикВопрос: что использовать как первичный ключ? 'produtcId', 'user', 'Source'
...
Рейтинг: 0 / 0
12.07.2010, 20:07
    #36736878
Таблица отзывов
alexeyvg,

Как насчет перформанса этого ключа? Не стои ли использовать хэш по этим полям?
...
Рейтинг: 0 / 0
12.07.2010, 20:10
    #36736880
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Китайский сварщикalexeyvg,

Как насчет перформанса этого ключа? Не стои ли использовать хэш по этим полям?Зависит от средней длинны этих полей и, наверное, от используемой СУБД.

Конечно, с кэшем будет быстрее, но стоит ли овчинка выделки...
...
Рейтинг: 0 / 0
12.07.2010, 22:07
    #36736990
Lemegeton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Удивляет, что productID и user -- текстовые поля.

Эти данные больше нигде не используются и не имеют других используемых функционально зависимых атрибутов?

Если все же это должны быть текстовые поля, для определения ключа следует уточнить, что определяет уникальность записи?

Для каждой записи продуктайди, пользователь и источник уникальны?

То есть, не может ли быть у одного пользователя для одного продактайди из одного источника другого контента?
...
Рейтинг: 0 / 0
12.07.2010, 23:08
    #36737053
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
LemegetonУдивляет, что productID и user -- текстовые поля.Это обычное дело для внешних ключей

Разве что 'Source' можно было сделать справочником - получится экономия, источников-же обычно немного.

Ну и вариант - сделать суррогатный целый ключ, а естественный оставить просто уникальным констрейном, если на эту таблицу есть ссылки - это уже будет оправдано.
...
Рейтинг: 0 / 0
13.07.2010, 12:21
    #36737863
Таблица отзывов
LemegetonУдивляет, что productID и user -- текстовые поля.

Эти данные больше нигде не используются и не имеют других используемых функционально зависимых атрибутов?


Да.

Lemegeton
Если все же это должны быть текстовые поля, для определения ключа следует уточнить, что определяет уникальность записи?

Для каждой записи продуктайди, пользователь и источник уникальны?

То есть, не может ли быть у одного пользователя для одного продактайди из одного источника другого контента?


Уникальность обеспечивает комбинация 'produtcId', 'user', 'Source'.
...
Рейтинг: 0 / 0
13.07.2010, 13:19
    #36738133
eduard.kasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Китайский сварщикВопрос: что использовать как первичный ключ?В таблицах первичный ключ - код записи.
...
Рейтинг: 0 / 0
13.07.2010, 13:41
    #36738209
Таблица отзывов
eduard.kasimovКитайский сварщикВопрос: что использовать как первичный ключ?В таблицах первичный ключ - код записи.

В этом то и проблема, что у меня нету кода записи.
...
Рейтинг: 0 / 0
13.07.2010, 15:26
    #36738625
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
eduard.kasimovВ таблицах первичный ключ - код записи.Странное утверждение. Разве они как то связаны, хоть по теории, хоть на практике?
...
Рейтинг: 0 / 0
13.07.2010, 16:31
    #36738855
eduard.kasimov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
alexeyvgeduard.kasimovВ таблицах первичный ключ - код записи.Странное утверждение. Разве они как то связаны, хоть по теории, хоть на практике?Применяю данное правило давно, результатом доволен. Перенял от Толика Тенцера:
Естественные ключи против искуственных ключей
...
Рейтинг: 0 / 0
13.07.2010, 18:27
    #36739204
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
eduard.kasimovalexeyvgeduard.kasimovВ таблицах первичный ключ - код записи.Странное утверждение. Разве они как то связаны, хоть по теории, хоть на практике?Применяю данное правило давно, результатом доволен. Перенял от Толика Тенцера:
Естественные ключи против искуственных ключей Да нету такого правила, в т.ч. и у Тенцера.

"первичный ключ (ПК) - набор атрибутов, уникально идентифицирующий её в таблице", как справедливо утверждает Тенцер. Вы почему то так не считаете, непонятно на каком основании.

Если на таблицу никто не ссылается, то тот же Тенцер пишет в той-же статье:
"В некоторых случаях (например, таблица на которую нет REFERENCES и в которую осуществляется интенсивная вставка данных и т.п.) более верно использовать ЕК"
что тоже вполне разумно.

Ну а вы утверждаете совсем странное: "В таблицах первичный ключ - код записи." Напрашивается продолжение - "А в процедурах первичный ключ - это ..." :-)

К тому же под кодом записи понимается обычно первичный ключ, в т. ч. и составной, и естественный.
...
Рейтинг: 0 / 0
13.07.2010, 19:40
    #36739297
Lemegeton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Китайский сварщикУникальность обеспечивает комбинация 'produtcId', 'user', 'Source'.
Вы сами прекрасно ответили на собственный вопрос. ;)

Китайский сварщикСмущает второй пункт. По идее, только комбинация всех полей в таблице обеспечивает уникальность, но поиск по четырем текстовым полям смущает.
Вопрос: что использовать как первичный ключ?
Да, поиск по четырем текстовым полям мальца смущает. Естественные текстовые ключи вообще не сильно рекомендуются в реальных СУБД. Тут надо бы замерить прибыль и расходы.
Попробуйте сделать справочники из полей, где значения часто повторяются, добавьте искуственный первичный ключ, воспользуйтесь полнотекстовым поисковиком (ну там Sphinx или что-там-сегодня-идеологически-верное?).
...
Рейтинг: 0 / 0
15.07.2010, 09:53
    #36742381
kink
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица отзывов
Китайский сварщикУникальность обеспечивает комбинация 'produtcId', 'user', 'Source'.

А если пользователь два отзыва на один продукт оставит?
Скажем после покупки и после того как он у него сломался. :)

Я бы добавил поле ID в таблицу отзывов.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблица отзывов / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]