Главная

Дилемма имен таблиц: сингулярные или множественные имена

Недавно задался вопросом, о том как же все таки именовать таблицы базы данных? И после поиска и прочтения множенства ответов на него, пришел к выводу, что я определенно остаюсь с "SINGULAR". На это есть свои причины.

Причина 1 (Концепция). Вы можете подумать о сумке с яблоками, не имеет значения, содержит ли она одно, два или миллион яблок, это всегда одна и та же сумка. Таблицы - это просто контейнеры, имя таблицы должно описывать, то что она содержит, а не сколько данных она содержит. Кроме того, понятие множественного числа больше относится к разговорной речи (фактически, чтобы определить, существует ли один или несколько).

Причина 2 (Удобство). Легче использовать единичные имена, чем множественные. Объекты могут иметь неправильное множественное число или вообще не иметь множественное число, но всегда будут иметь единственное число, за некоторыми исключениями, такими как, например, "новости - news"):

  • Customer
  • Order
  • User
  • Status
  • News

Причина 3 (Эстетика и порядок). Особенно в сценариях "мастер-детали", он лучше читается, лучше выравнивается по имени и имеет более логичный порядок (сначала мастер, потом детали):

  • Order
  • OrderDetail

В сравнении с:

  • OrderDetails
  • Orders

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

  • Customer
  • Customer.CustomerID
  • CustomerAddress
  • class Customer {...}
  • SELECT FROM Customer WHERE CustomerID = 100

Как только вы узнаете, что имеете дело с "Customer", вы можете быть уверены, что будете использовать одно и то же слово для всех ваших потребностей взаимодействия с базой данных.

Причина 5 (Глобализация). Мир становится меньше, у вас может быть команда разных национальностей, не все из них знают английский как родной язык. Для программиста, не являющегося носителем английского языка, было бы проще думать о "Репозитории", чем о "Репозиториях" или 'Статусе" вместо "Статусы". Наличие единичных имен может привести к меньшему количеству ошибок, вызванных опечатками, сэкономить время, не думая "это ребенок или дети?", следовательно, повысить производительность.

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

SELECT Customer.CustomerName FROM Customer WHERE Customer.CustomerID = 100
SELECT Customer.CustomerName FROM Customer WHERE Customer.CustomerID = 100

Вы сохранили 3 буквы, 3 байта, 3 дополнительных нажатия клавиш 🙂

Роберт Фатхуллин

Статья Роберт Фатхуллин

Backend Developer