2008-12-14 1 views
1

У меня есть система комментариев в нашей базе данных. Точно так же, как stackoverflow -> у каждого сообщения есть список комментариев. Kewl.Нужно ли мне специальное ограничение базы данных в этой таблице?

Анонимные пользователи могут добавлять комментарий или зарегистрировали пользователи.

В моей таблице, я имею в виду иметь следующее:

  • Userid INT NULLABLE
  • AnonymousNickname VARCHAR (100) NULLABLE
  • AnonymousEmail VARCHAR (200) NULLABLE

теперь это может быть только одно или другое. Вы либо зарегистрированы, либо нет.

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

Примечание: База данных Microsoft SQL Server 2008.

ура!

ответ

2

Простое ограничение будет

(Userid is not null and AnonymousNickname is null and AnonymousEmail is null) 
or (Userid is null and AnonymousNickname is not null and AnonymousEmail is not null) 

Это заставит только одну или другую сторону, чтобы установить. Похоже, это было бы разумно на основе вашего приложения. Это зависит от вас, чтобы принять решение о ее соблюдении в базе данных или в вашем приложении. Если это жесткое ограничение, от которого зависят другие части вашего приложения, я бы, вероятно, использовал его в базе данных и обнаружил бы его посредством проверки в вашем коде.

+0

Я обязательно буду проверять это в приложении, но мне нравится всегда иметь очень жесткий код _and_ жесткого Db, поэтому я не был уверен, что это также может быть сделано в базе данных. Если да, то как? – 2008-12-14 05:19:50

+0

Ответ tvanfosson Как вы это делаете в db - создайте ограничение на таблицу и используйте его код ... – RedFilter 2008-12-14 05:34:58

0

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

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