Когда использовать псевдоним таблицы SQL

30
задан CGritton 4 November 2016 в 18:55
поделиться

14 ответов

Существует две причины использования псевдонимов таблицы.

первое является косметическим. Операторы легче записать, и возможно также легче читать, когда псевдонимы таблицы используются.

второе более независимо. Если таблица появляется несколько раз в ИЗ пункта, Вам нужны псевдонимы таблицы для хранения их отличными. Сам соединения распространены в случаях, где таблица содержит внешний ключ, который ссылается на первичный ключ той же таблицы.

Два примера: список сотрудников, который содержит supervisorID столбец, который ссылается на employeeID супервизора.

вторым является взрыв частей. Часто, это реализовано в отдельной таблице с тремя столбцами: ComponentPartID, AssemblyPartID и Количество. В этом случае не будет никого сам соединения, но часто будет три пути соединение между этой таблицей и двумя различными ссылками на таблицу Частей.

Это - хорошая привычка войти.

21
ответ дан mikej 5 November 2016 в 04:55
поделиться

Псевдонимы таблиц должны быть четырьмя вещами:

  1. Короткий
  2. Значимый
  3. Всегда использовал
  4. Используемый последовательно

, Например, если бы у Вас были таблицы, названные service_request, service_provider, пользователь и филиал (среди многих других), то хорошая практика должна была бы исказить те таблицы как "сэра", "SP", "u", и "a", и сделать так в каждом возможном запросе. Это особенно удобно, если как это часто бывает эти псевдонимы совпадают с акронимами, используемыми Вашей организацией. Таким образом, если "SR" и "SP" являются принятыми условиями для Запроса на обслуживание и Поставщика услуг соответственно, псевдонимов выше переноса двойная полезная нагрузка интуитивного помогания и для таблицы и для бизнес-объекта, это представляет.

очевидные дефекты с этой системой являются первыми, что это может быть неловким для имен таблиц с большим количеством "слов", например, a_long_multi_word_table_name, который исказил бы к almwtn или чему-то, и что вероятно, что Вы закончите с таблицами, названными таким образом, что они сокращают то же. С первым дефектом можно иметь дело однако, Вам нравится, такой как путем взятия последних 3 или 4 букв, или какой бы ни подмножество, которое Вы чувствуете, является самым представительным, самым уникальным, или самым легким ввести. Второе, которое я нашел на практике, не так неприятно, как это могло бы казаться, возможно, только удачей. Можно также сделать, вещам нравится, берут вторую букву "слова" в таблице также, такой как искажение account_transaction к "atr" вместо "в" постараться не конфликтовать с account_type.

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

0
ответ дан Noah Yetter 5 November 2016 в 04:55
поделиться

Я всегда использую их. Я раньше только использовал их в запросах, включающих всего одну таблицу, но затем я осознал a) запросы, включающие всего одну таблицу, редки и b) запросы, включающие всего одну таблицу, редко остаются тот путь долгое время. Таким образом, я всегда вставлял их от запуска так, чтобы я (или кто-то еще) не имел к ретро, соответствуют им позже. О, и BTW: Я называю их "именами корреляции", согласно Стандарту SQL-92 :)

0
ответ дан onedaywhen 5 November 2016 в 04:55
поделиться

Одна вещь, которую я изучил, является этим особенно со сложными запросами; намного более просто диагностировать шесть месяцев спустя, если Вы используете псевдоним в качестве спецификатора для каждой ссылки поля. Затем Вы не пытаетесь помнить, какая таблица, из которой прибыло поле.

Мы склонны иметь некоторые смехотворно долгие имена таблиц, таким образом, я нахожу легче читать, если таблицы искажаются. И конечно необходимо сделать это при использовании полученной таблицы или сам, соединение, таким образом будучи в привычке является хорошей идеей. Я нахожу, что большинство наших разработчиков заканчивает тем, что использовало тот же псевдоним для каждой таблицы во всем их SPS, поэтому большую часть времени любой читающий его будет сразу знать, какой мопс является псевдонимом для или mmh.

0
ответ дан HLGEM 5 November 2016 в 04:55
поделиться

Я нахожу это не чем иным как предпочтением. Как упомянуто выше, псевдонимы сохраняют ввод, особенно с длинными именами таблицы/представления.

0
ответ дан Jeff Schumacher 5 November 2016 в 04:55
поделиться
  • 1
    Почему кто-то не мог бы установить инструменты? Возможно, потому что они устанавливают его на сервере... – Andrew Barber 9 October 2011 в 23:11

Я чувствую, что необходимо использовать их максимально часто, но я действительно согласовываю это t & s представляют объекты лучше, чем & b.

Это сводится к, как все остальное, предпочтения. Мне нравится этот, можно зависеть от хранимых процедур в соответствии с теми же конвенциями, когда каждый разработчик использует псевдоним таким же образом.

Идут, убеждают Ваших коллег входить в ту же страницу как Вы, или это все бесполезно. Альтернатива - Вы, мог иметь таблицу Zebra так первая таблица и исказить его, как a. Это просто было бы милым.

0
ответ дан Adam Caviness 5 November 2016 в 04:55
поделиться

Всегда. Сделайте это привычкой.

-1
ответ дан yfeldblum 5 November 2016 в 04:55
поделиться

я только использую их, когда они необходимы для различения, которые представляют поле в виде таблицы, прибывает от

select PartNumber, I.InventoryTypeId, InventoryTypeDescription
from dbo.Inventory I
    inner join dbo.InventoryType IT on IT.InventoryTypeId = I.InventoryTypeId

В примере выше обеих таблиц, имеют поле InventoryTypeId, но другие имена полей уникальны.

Всегда используют сокращение для таблицы как имя так, чтобы код имел больше смысла - спрашивают Ваши другие разработчики, если они называют свои локальные переменные A, B, C, и т.д.!

единственное исключение находится в редких случаях, где синтаксис SQL требует псевдонима таблицы, но на это не ссылаются, например,

select *
from (
    select field1, field2, sum(field3) as total
    from someothertable
) X

В вышеупомянутом, синтаксис SQL требует псевдонима таблицы для подвыбора, но на это не ссылаются нигде, таким образом, я становлюсь ленивым и использую X или что-то как этот.

0
ответ дан Steven A. Lowe 5 November 2016 в 04:55
поделиться
  • 1
    Я очень импортирую проект в свой IDE. Я использую ИДЕЮ IntelliJ, которая может создать и развернуться одним щелчком к полдюжине различным контейнерам, включая Tomcat, Причал, Glassfish и DM Spring (в ИДЕЕ x). jetty:run цель является большой для проектов, в которых регистрируются и просто должны легко выполнить загрузчики, но не являются хорошим выбором вообще для итерационной разработки. – Brian Topping 7 December 2010 в 14:16

Как правило я всегда использую их , поскольку обычно существуют, несколько присоединяются к продолжению в моих хранимых процедурах. Это также помогает, когда использование инструментов генерации кода как CodeSmith, чтобы иметь его генерирует имя псевдонима автоматически Вас.

я пытаюсь избегать одних букв как & b, поскольку у меня может быть несколько таблиц, которые запускаются с буквы A или b. Я иду с более длительным подходом, конкатенацией внешнего ключа, на который ссылаются, с таблицей псевдонима, например, CustomerContact... это было бы псевдонимом для таблицы Customer при соединении с таблицей Contact.

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

Используя текущий пример, я сделал бы что-то как:

SELECT TripNum, TripSegment.SegmentNum, TripSegment.StopNum, TripSegment.ArrivalTime 
FROM Trip, Segment TripSegment 
WHERE TripNum = TripSegment.TripNum
6
ответ дан mattruma 5 November 2016 в 04:55
поделиться
  • 1
    Никто не создает со Знатоком для быстрых повторений. Загрузите свой проект в IDE... ИДЕЯ IntelliJ, Eclipse или Netbeans, который все понимают, как проанализировать проекты Знатока, и если Вы don' t имеют специальные плагины (или плагины только должны быть выполнены после определенного изменения файлов), you' ll никогда не испытывают их как проблемы, о которых Вы особенно заботитесь. – Brian Topping 7 December 2010 в 13:54

Я использую их для сохранения ввода. Однако я всегда использую буквы, подобные функции. Так, в Вашем примере я ввел бы:

SELECT t.TripNum, s.SegmentNum, s.StopNum, s.ArrivalTime 
FROM Trip t, Segment s 
WHERE t.TripNum = s.TripNum

, Который просто помогает читать для меня.

20
ответ дан BoltBait 5 November 2016 в 04:55
поделиться
  • 1
    Так как дела быстрые повторения в веб-приложении тогда? Есть ли что-то, что Вы делаете в IDE вместо " mvn jetty:run"? или я предполагаю, что ответ в основном что Вы просто can' t делают быстрые повторения для веб-приложения и должны пострадать посредством переустановки Вашего проекта все время? – Ben McCann 7 December 2010 в 14:13

Я всегда использую его, причины:

  • уезжающие полные имена таблиц в операторах делают их трудно для чтения, плюс Вы не может иметь той же таблицы дважды
  • не использование, что-либо - очень плохая идея, потому что позже Вы могли добавить некоторое поле к одной из таблиц, которая уже присутствует в некоторой другой таблице

, Рассматривают этот пример:

select col1, col2
from tab1
join tab2 on tab1.col3 = tab2.col3

Теперь, вообразите несколько месяцев спустя, Вы решаете добавить столбец, названный 'col1' к tab2. База данных тихо позволит Вам делать это, но приложения повредились бы при выполнении вышеупомянутого запроса из-за неоднозначности между tab1.col1 и tab2.col1.

, Но, я соглашаюсь с Вами на именовании: a, b, c прекрасен, но t и s был бы намного лучше в Вашем примере. И когда у меня есть та же таблица несколько раз, я использовал бы t1, t2... или s1, s2, s3...

1
ответ дан Milan Babuškov 5 November 2016 в 04:55
поделиться
  • 1
    Эй Joey. Таким образом, я проверил его и нашел конечный результат передать.. Полная сводка: Конечный результат: Переданный Код выхода (Десятичное число): 0 сообщений Выхода: Переданное Время начала: 23.09.2011 23:40:09 Времени окончания: 23.09.2011 23:40:28 Требуемое действие: RunRules – iDevJunkie 26 September 2011 в 16:09

Используя полное имя мешает читать, специально для больших запросов или Order/Product/OrderProduct scenari0

, я использовал бы t и s. Или o/p/op

при использовании SCHEMABINDING затем столбцы, должен быть квалифицирован так или иначе

, Если Вы добавляете столбец к базовой таблице, затем квалификация уменьшает шанс дубликата в запросе (например, столбец "Comment")

из-за этой квалификации, имеет смысл всегда использовать псевдонимы.

Используя a и b слепое повиновение к причудливому стандарту.

0
ответ дан 5 November 2016 в 04:55
поделиться
  • 1
    Парикмахер @Andrew Хм. Я didn' t думают о той возможности... Спасибо за комментарий, Брата. – iDevJunkie 24 November 2011 в 05:16

В простых запросах я не использую псевдонимы. В запросах с несколькими таблицами я всегда использую их, потому что:

  • они делают запросы более читаемыми (мой псевдонимы состоят из 2 или более заглавных букв, что является ярлыком для имени таблицы и, если возможно отношение к другим таблицы)
  • они позволяют быстрее развиваться и переписывание (мои имена таблиц длинные и имеют префиксы в зависимости от роли, которую они представляют)

поэтому вместо, например:

SELECT SUM(a.VALUE) 
       FROM Domesticvalues a, Foreignvalues b 
       WHERE a.Value>b.Value
       AND a.Something ...

я пишу:

select SUM(DVAL.Value) 
       from DomesticValues DVAL, ForeignValues FVAL 
       where DVAL.Value > FVAL.Value
       and   DVAL.Something ...
1
ответ дан 27 November 2019 в 22:21
поделиться

Могу я добавить к дискуссии, которой уже несколько лет?

Есть еще одна причина, о которой никто не упомянул. Парсер SQL в некоторых базах данных лучше работает с псевдонимом. Я не могу вспомнить, изменил ли Oracle это в более поздних версиях, но когда дело дошло до псевдонима, он просмотрел столбцы в базе данных и запомнил их. Когда дело дошло до имени таблицы, даже если оно уже встречалось в операторе, он повторно проверил базу данных на наличие столбцов. Таким образом, использование псевдонима позволило ускорить синтаксический анализ, особенно длинных операторов SQL. Я уверен, что кто-то знает, так ли это до сих пор, если другие базы данных делают это во время синтаксического анализа, и если это изменилось, когда оно изменилось.

3
ответ дан 27 November 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: