В случае Oracle, вы хотите , чтобы не назвать столбцы «идентификатор» или «имя» или что - нибудь родовое.
Проблема в том, что по умолчанию в более старых версиях Oracle будет пытаться объединить таблицы на основе похожих имен столбцов, поэтому, если я назвал все правильно, я также в конечном итоге определил условие соединения по умолчанию между моими таблицами.
Но даже если вы не используете Oracle, не выбирая имена, которые появляются в нескольких таблицах, это также означает, что вам не придется сталкиваться с проблемой псевдонимов каждый раз, когда вы делаете выбор между двумя таблицами:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
Таким образом, если выбор из нескольких таблиц является нормой, более длинные имена столбцов сохраняют ваш ввод. (если вы используете только одну таблицу за раз ... вам действительно нужна реляционная база данных?)
... и сохранение типизации приводит нас к другой проблеме в Oracle - по крайней мере, в 8i (текущая версия, когда я проходил курсы по настройке Oracle SQL Tuning и Data Modeling), кэширование планов выполнения основано только на первых, стольких символах запрос (не могу вспомнить точное значение ... 1024?), поэтому, если у вас есть запросы, которые только в чем-то меняются в конце предложения where, и действительно длинный список столбцов, которые вы извлекаете, вы может привести к падению производительности, поскольку не может правильно кэшировать план выполнения.
У Oracle было руководство по выбору того, что они называют хорошими именами таблиц и столбцов, в основном это руководство по удалению букв до 5-8 символов, но меня это мало заботило.
...
Как дела идут иначе, чем это:
- столбцы всегда в единственном числе (таблицы всегда во множественном числе)
- все имена строчные, на всякий случай
- В результате вышесказанного используйте подчеркивание вместо верблюда.
обновление : для тех, кто не знаком с поведением соединения Oracle, смотрите последний пример « Освоение Oracle SQL: условия соединения» , где упоминается:
Что произошло? Причина заключается в том, что, кроме supplier_id, эти две таблицы имеют еще одну пару столбцов с общим именем. Этот столбец называется. Таким образом, когда вы запрашиваете естественное объединение между поставщиком и таблицами деталей, объединение происходит не только путем приравнивания столбца supplier_id двух таблиц, но и выравнивания столбца имени из этих двух таблиц. Поскольку имя поставщика не совпадает с именем детали этого поставщика, строки не возвращаются запросом.
В «старом синтаксисе соединения» (8i и более ранних) «NATURAL JOIN» было поведением соединения по умолчанию, и я верю, что это так и есть, если вы не указали условие соединения. Когда в 9i «NATURAL JOIN» был официальным вариантом, общая рекомендация заключалась в том, чтобы не использовать его , потому что неправильное именование столбцов может вас испортить, что я и рекомендую для хороших имен столбцов.