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

       

Наименование полей


Имена полей таблицы, как правило, составляются из имени сущности (city), смыслового суффикса (id, name, area), и необязательного дополнительного суффикса (применяется для полей внешних ключей в случае множественных ссылок, рассмотрим это ниже). Например

scity - Справочник городов

cityid

Ид (PK)

cityname

Название

cityarea

Площадь (км2)

citypopulcnt

Население

cstrtype - Список типов улиц

strtypeid

Ид (PK)

strtypename

Название


sstreet - Справочник улиц городов

1

streetid

Ид (PK)

2

cityid

Город.Ид (FK scity )

3

strtypeid

Тип улицы.Ид (FK cstrtype)

4

streetname

Название

В зале слышны крики ревнителей минимализма и экономии символов. Мы видим, что в имени каждого поля таблицы участвует название сущности, то есть практически повторяется имя таблицы (без префикса). Оправдано ли это? Почему бы всегда не называть идентификаторы просто ID, названия - Name?  Ведь в SQL-запросах есть возможность полной нотации имен, с указанием таблицы: WHERE scity.name LIKE "%МОСКВА%" AND sstreet.name LIKE "%ЛЕНИНА%" ?

Первое, на чем споткнется такой подход - внешние ключи. Пусть в списке типов улиц cstrtype ключ мы назвали ID, и ключ улицы тоже назвали ID. Как прикажете назвать поле номер 3 в таблице улиц sstreet, которое ссылается на тип улицы cstrtype? Ах, вот теперь вы хотите назвать его strtype_id? 

Но тогда получается, что в БД есть поля, содержащие одну и ту же информацию, а названные по-разному. Кто здесь хотел не плодить сущности без необходимости? Для единообразия придется вернуться в cstrtype, и переименовать тамошний ключ ID тоже в strtype_id. К той же печке и пританцевали.

Ну хорошо, не унимаются минималисты. С ключами понятно. А названия, и прочие неключевые поля? Их-то можно назвать просто Name?

Хорошо. Назовем названия города, улицы и типа улицы просто Name, и составим запрос, выводящий "Улица Ленина, Москва".

SELECT cstrtype.name, sstreet.name, scity.name....

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