Именование логических (битовых) значений в базе данных SQL - PullRequest
4 голосов
/ 21 сентября 2010

Словарь данных AdventureWorks указывает, что столбец [EmailPromotion] в таблице [Contact] является int и что:

0 = Contact does not wish to receive e-mail promotions.
1 = Contact does wish to receive e-mail promotions.

и [Employee].[CurrentFlag] использует bit следующим образом:

0 = Inactive
1 = Active

Мой вопрос состоит из двух частей:

  • Есть ли веская причина использовать тип данных int вместо bit (оба варианта будут задокументированы)?
  • Какие соглашения об именах для логических и логических столбцов вы рекомендуете? (например, IsActive, ActiveFlag, Active)

Ответы [ 3 ]

6 голосов
/ 21 сентября 2010

Для первой части они, вероятно, учитывают будущие коды состояния (хотя с этим именем столбца трудно представить, что это могло бы быть ...).

Вы найдете много несогласия с вашим вторым вопросом, но я предпочитаю IsActive в качестве имени в данном случае.Я считаю, что он хорошо читается и предотвращает двойной негатив в коде, который вы получили бы, если бы использовали что-то вроде IsInactive.

2 голосов
/ 21 сентября 2010

Есть ли веская причина использовать тип данных int в месте бита (оба использования будут документированы)?

INT поддерживается последовательно.Хотя BIT становится все более распространенным, держу пари, что поддержка - это просто маска для столбца INT с ограничением CHECK.Есть хороший вопрос о том, почему у Oracle нет определенного типа данных BIT / BOOLEAN ...

Какие соглашения об именах для логических и логических столбцов вы рекомендуете?(например, IsActive, ActiveFlag, Active)

То же, что и программирование, они должны начинаться с префикса "is", а при чтении должен содержать вопрос "да / нет", чтобы сделать вывод, что столбец является логическим индикатором.Так что «isActive» будет моим решением, но я бы хотел выяснить, не требует ли ситуация таблицы STATUS и внешнего ключа.

2 голосов
/ 21 сентября 2010

Все, что плавает на вашей лодке. Единственная важная вещь - соглашение об именовании и согласованность в базе данных.

Использование int для флага неоправданно, я бы использовал tinyint, я почти никогда не использую bit, потому что я всегда открыт для любых возможностей.

Я обычно называю эти столбцы Active (если есть только два статуса) и StatusId (если существует более одного статуса).

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