Имена полей таблицы, как правило, составляются из имени сущности (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....