Нужно ли специальное ограничение базы данных для этой таблицы? - PullRequest
1 голос
/ 14 декабря 2008

У меня есть система комментариев в нашей базе данных. Так же, как stackoverflow -> каждый пост имеет список комментариев. Kewl.

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

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

  • ИД пользователя int NULLABLE
  • AnonymousNickname varchar (100) NULLABLE
  • AnonymousEmail varchar (200) NULLABLE

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

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

ПРИМЕЧАНИЕ. База данных - Microsoft Sql Server 2008.

ура!

Ответы [ 2 ]

2 голосов
/ 14 декабря 2008

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

(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 голосов
/ 14 декабря 2008

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

...