Классика баз данных - статьи

       

Наименование таблиц


Многие проектировщики дают таблицам непосредственно имена сущностей (в единственном числе), например street, city. Другие же ратуют за то, что таблицы нужно называть множественным числом - streets, cities. И единого мнения быть не может. Дело в том, что если говорить об удобочитаемости SQL-запросов, вроде следующего:

SELECT * FROM cities, streets WHERE streets.cityid = cities.cityid AND streets.name LIKE "%тупик Третьего Интернационала%"

то нетрудно заметить, что секция FROM грамматически подразумевает множественное число - "ВЫБРАТЬ.. ИЗ городов, улиц". В то же время секция WHERE "читается" с единственным числом - "ВЫБРАТЬ ту запись, ГДЕ название улицы ПОХОЖЕ ...", и это понятно - ведь условие под WHERE применяется к каждой записи набора по отдельности, то есть к каждой улице.

Если вспомнить, что мы хотим использовать имя сущности также в программах обработки данных, где объектом работы становится именно "единица" информации (например в названии класса для хранения одной улицы TStreet, а затем в названии переменой-объекта objStreet1), то разумнее остановиться на единственном числе как на стандарте. Но ведь в таблице все-таки живет множество сущностей! Как это выразить? Для таблиц примем следующее волюнтаристское решение:

Имя таблицы состоит из служебного префикса и имени сущности. Например.

Префикс

Имя сущности

Имя таблицы

Название таблицы в целом

(как множества сущностей)

C

STRTYPE (тип улицы)

CSTRTYPE Каталог типов улиц

S

STREET (улица)

SSTREET Справочник улиц

R

ABON (абонент)

RABON

Реестр

абонентов

J

CALCOP (выч. операция)

JCALCOP Журнал вычислительных операций

Таким образом, благодаря мысленной расшифровке префикса мы можем воспринимать таблицу как множество сущностей со своим нравом - ведь таблица таблице рознь. Я предлагаю такие префиксы:

  • C - Catalog, список. Самая безобидная форма жизни информации. Представляет собой простейший справочник из десятка пунктов чего-то неизменного, или почти неизменного.

    Содержание  Назад  Вперед