2012-06-18 2 views
0

У меня есть следующая ситуация.Лучший способ создания этих таблиц

Мы хотим получить таблицу репутации для оценки пользователей и компаний.

Этот стол репутации будет хранить репутацию, предоставляемую Компанией Пользователю, и наоборот.

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

Я не думаю, что это лучший способ, но я не могу найти другое решение.

Есть ли другой способ, которым мы могли бы это сделать?

thx

+0

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

ответ

0

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

Я предполагаю, что отношения между Co и User - это многие ко многим.

Вам нужна еще одна таблица, содержащая обе клавиши, для Co и User и два поля, один для Co-rep и один для User-rep. Комбинация Co-Key и User-key будет уникальной для этой таблицы.

+0

Мы обсудили предлагаемые решения, и мы придерживались этого. thx! –

1

Я не думаю, что ваш подход плох; другим решением было бы иметь абстрактную таблицу Entity, с каждой User и Company, имеющую свою собственную запись Entity (и, таким образом, идентификатор объекта); то вы отслеживаете репутацию между двумя объектами только в одной таблице Reputation.

Другой подход должен иметь Reputation таблицу с идентификатором пользователя, компания ID и type (или direction, или что-то кажется логичным в вашей модели) поле, которое указывает, является ли это репутация компании, заданной пользователем , или наоборот. Кажется менее нормализованным.

Смежные вопросы