Существует две причины использования псевдонимов таблицы.
первое является косметическим. Операторы легче записать, и возможно также легче читать, когда псевдонимы таблицы используются.
второе более независимо. Если таблица появляется несколько раз в ИЗ пункта, Вам нужны псевдонимы таблицы для хранения их отличными. Сам соединения распространены в случаях, где таблица содержит внешний ключ, который ссылается на первичный ключ той же таблицы.
Два примера: список сотрудников, который содержит supervisorID столбец, который ссылается на employeeID супервизора.
вторым является взрыв частей. Часто, это реализовано в отдельной таблице с тремя столбцами: ComponentPartID, AssemblyPartID и Количество. В этом случае не будет никого сам соединения, но часто будет три пути соединение между этой таблицей и двумя различными ссылками на таблицу Частей.
Это - хорошая привычка войти.
Псевдонимы таблиц должны быть четырьмя вещами:
, Например, если бы у Вас были таблицы, названные service_request, service_provider, пользователь и филиал (среди многих других), то хорошая практика должна была бы исказить те таблицы как "сэра", "SP", "u", и "a", и сделать так в каждом возможном запросе. Это особенно удобно, если как это часто бывает эти псевдонимы совпадают с акронимами, используемыми Вашей организацией. Таким образом, если "SR" и "SP" являются принятыми условиями для Запроса на обслуживание и Поставщика услуг соответственно, псевдонимов выше переноса двойная полезная нагрузка интуитивного помогания и для таблицы и для бизнес-объекта, это представляет.
очевидные дефекты с этой системой являются первыми, что это может быть неловким для имен таблиц с большим количеством "слов", например, a_long_multi_word_table_name, который исказил бы к almwtn или чему-то, и что вероятно, что Вы закончите с таблицами, названными таким образом, что они сокращают то же. С первым дефектом можно иметь дело однако, Вам нравится, такой как путем взятия последних 3 или 4 букв, или какой бы ни подмножество, которое Вы чувствуете, является самым представительным, самым уникальным, или самым легким ввести. Второе, которое я нашел на практике, не так неприятно, как это могло бы казаться, возможно, только удачей. Можно также сделать, вещам нравится, берут вторую букву "слова" в таблице также, такой как искажение account_transaction к "atr" вместо "в" постараться не конфликтовать с account_type.
, Конечно, используете ли Вы вышеупомянутый подход или нет, псевдонимы должны быть короткими, потому что Вы будете вводить их очень очень часто, и они должны всегда использоваться, потому что, после того как Вы записали запрос против единственной таблицы и опустили псевдоним, неизбежно, что необходимо будет позже отредактировать во второй таблице с дублирующимися именами столбцов.
Я всегда использую их. Я раньше только использовал их в запросах, включающих всего одну таблицу, но затем я осознал a) запросы, включающие всего одну таблицу, редки и b) запросы, включающие всего одну таблицу, редко остаются тот путь долгое время. Таким образом, я всегда вставлял их от запуска так, чтобы я (или кто-то еще) не имел к ретро, соответствуют им позже. О, и BTW: Я называю их "именами корреляции", согласно Стандарту SQL-92 :)
Одна вещь, которую я изучил, является этим особенно со сложными запросами; намного более просто диагностировать шесть месяцев спустя, если Вы используете псевдоним в качестве спецификатора для каждой ссылки поля. Затем Вы не пытаетесь помнить, какая таблица, из которой прибыло поле.
Мы склонны иметь некоторые смехотворно долгие имена таблиц, таким образом, я нахожу легче читать, если таблицы искажаются. И конечно необходимо сделать это при использовании полученной таблицы или сам, соединение, таким образом будучи в привычке является хорошей идеей. Я нахожу, что большинство наших разработчиков заканчивает тем, что использовало тот же псевдоним для каждой таблицы во всем их SPS, поэтому большую часть времени любой читающий его будет сразу знать, какой мопс является псевдонимом для или mmh.
Я нахожу это не чем иным как предпочтением. Как упомянуто выше, псевдонимы сохраняют ввод, особенно с длинными именами таблицы/представления.
Я чувствую, что необходимо использовать их максимально часто, но я действительно согласовываю это t & s представляют объекты лучше, чем & b.
Это сводится к, как все остальное, предпочтения. Мне нравится этот, можно зависеть от хранимых процедур в соответствии с теми же конвенциями, когда каждый разработчик использует псевдоним таким же образом.
Идут, убеждают Ваших коллег входить в ту же страницу как Вы, или это все бесполезно. Альтернатива - Вы, мог иметь таблицу Zebra так первая таблица и исказить его, как a. Это просто было бы милым.
я только использую их, когда они необходимы для различения, которые представляют поле в виде таблицы, прибывает от
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 или что-то как этот.
Как правило я всегда использую их , поскольку обычно существуют, несколько присоединяются к продолжению в моих хранимых процедурах. Это также помогает, когда использование инструментов генерации кода как CodeSmith, чтобы иметь его генерирует имя псевдонима автоматически Вас.
я пытаюсь избегать одних букв как & b, поскольку у меня может быть несколько таблиц, которые запускаются с буквы A или b. Я иду с более длительным подходом, конкатенацией внешнего ключа, на который ссылаются, с таблицей псевдонима, например, CustomerContact... это было бы псевдонимом для таблицы Customer при соединении с таблицей Contact.
другая причина я не возражаю дольше имя, происходит из-за большинства моих хранимых процедур, сгенерированы с помощью кода CodeSmith. Я не возражаю против руки, вводящей немногие , что мне, вероятно, придется создать меня.
Используя текущий пример, я сделал бы что-то как:
SELECT TripNum, TripSegment.SegmentNum, TripSegment.StopNum, TripSegment.ArrivalTime
FROM Trip, Segment TripSegment
WHERE TripNum = TripSegment.TripNum
Я использую их для сохранения ввода. Однако я всегда использую буквы, подобные функции. Так, в Вашем примере я ввел бы:
SELECT t.TripNum, s.SegmentNum, s.StopNum, s.ArrivalTime
FROM Trip t, Segment s
WHERE t.TripNum = s.TripNum
, Который просто помогает читать для меня.
Я всегда использую его, причины:
, Рассматривают этот пример:
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...
Используя полное имя мешает читать, специально для больших запросов или Order/Product/OrderProduct scenari0
, я использовал бы t и s. Или o/p/op
при использовании SCHEMABINDING затем столбцы, должен быть квалифицирован так или иначе
, Если Вы добавляете столбец к базовой таблице, затем квалификация уменьшает шанс дубликата в запросе (например, столбец "Comment")
из-за этой квалификации, имеет смысл всегда использовать псевдонимы.
Используя a и b слепое повиновение к причудливому стандарту.
В простых запросах я не использую псевдонимы. В запросах с несколькими таблицами я всегда использую их, потому что:
поэтому вместо, например:
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 ...
Могу я добавить к дискуссии, которой уже несколько лет?
Есть еще одна причина, о которой никто не упомянул. Парсер SQL в некоторых базах данных лучше работает с псевдонимом. Я не могу вспомнить, изменил ли Oracle это в более поздних версиях, но когда дело дошло до псевдонима, он просмотрел столбцы в базе данных и запомнил их. Когда дело дошло до имени таблицы, даже если оно уже встречалось в операторе, он повторно проверил базу данных на наличие столбцов. Таким образом, использование псевдонима позволило ускорить синтаксический анализ, особенно длинных операторов SQL. Я уверен, что кто-то знает, так ли это до сих пор, если другие базы данных делают это во время синтаксического анализа, и если это изменилось, когда оно изменилось.