Проблема связи с базой данных - PullRequest
1 голос
/ 22 января 2011

В моей базе данных я получил список компаний с колонками CompanyId и Name.Далее есть пользователи, и эти пользователи могут добавлять продукты.Таблицы: user и user_products Нет таблицы продуктов, определяющей продукты, они уникальны для каждого пользователя, поэтому «user_product»

Когда пользователь добавляет продукт, он вводит название компании.Если это имя компании существует в таблице компании, я хочу установить соединение с таблицей компании, а не сохранять только имя в user_product.Пока все хорошо ... Я просто храню CompanyId в таблице user_product.

Проблема в том, что пользователь вводит имя, которого нет в таблице компании.Вместо сохранения имени как varchar я хочу создать новую запись в таблице с именем user_company.Стол получил столбцы: UserCompanyId (PK), UserId, Name.Если комбинация Name и UserId уже существует, я, конечно, не буду создавать новую строку, просто сослаться на этот идентификатор.

Что я должен сделать, чтобы поддерживать хороший дизайн базы данных здесь ... Должен ли я добавить эту запись, а такженовый столбец в user_product с именем UserCompanyId.Так что либо CompanyId, либо UserCompanyId всегда устанавливаются при добавлении новой строки.Такое ощущение, что это можно сделать лучше.Кто-нибудь есть какие-нибудь идеи?

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

1 Ответ

2 голосов
/ 22 января 2011

На самом деле, я думаю, что вы прибили это в своем последнем абзаце. Компания либо определена пользователем, либо не определена, поэтому userId имеет смысл как обнуляемый столбец. Это также позволит вам иметь уникальный ключ в названии компании, что позволит вам использовать базу данных для подтверждения того факта, что название компании не может дублироваться.

Ваша таблица компаний существует для определения компаний - какой пользователь (или пользователь) создал компанию - это просто информация о компании.

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