문제

What are the pros and cons of using 테이블 별칭에서 SQL?나 개인적으로 그들을 피하려고,내가 생각한 그들은 코드를 적게 읽을 수 있는(특히 읽을 때는 큰 어디서/및 문),그러나 나는 청문회에 관심이 있을 반대하는 점이다.할 때입니다 그것은 일반적으로 사용하는 것은 좋은 생각 테이블 별명을,그리고 당신은 어떤 원하는 형식으로?

도움이 되었습니까?

해결책

테이블 별칭은 필요 악을 처리할 때 고도의 정상화입니다.예를 들어,그리고 내가 건축가가 이것에 DB 그래서 나와 함께,그것은 걸릴 수 있습니다 7 조인을 얻기 위해서 깨끗하고 완전한 기록을 다시 포함하는 한 사람의 이름,주소,전화번호,회사가 책임이 있습니다.

보다는 다소 스탠다드 싱글 문자는 별칭하는 경향이 있 호의 짧은 단어는 별칭을 그래서 위의 예제의 SQL 처럼 보이는 끝:

select person.FirstName
      ,person.LastName
      ,addr.StreetAddress
      ,addr.City
      ,addr.State
      ,addr.Zip
      ,phone.PhoneNumber
      ,company.CompanyName
from tblPeople person
left outer join tblAffiliations affl on affl.personID = person.personID
left outer join tblCompany company on company.companyID = affl.companyID

...etc.

다른 팁

만,일부 경우에 당신 사용처럼,그들이 필요할 때 가입하세 동일한 테이블에 두 번에 하나의 쿼리가 있습니다.

그것은 또한에 따라 어떠했는지 독특한 열 이름을 걸쳐 테이블이 있습니다.에서 우리의 레거시 데이터베이스는 3-문자 접두사에 대한 모든 열에 따른,축약된 형태에서 테이블을 간단하기 때문에,하나의 고대의 데이터베이스 시스템을 우리는 일단 호환으로 지원하지 않았다 테이블 별칭을 모니다.

는 경우에 당신은 열 이름에서 발생하는 하나 이상의 테이블을 지정하여 테이블의 이름의 일부분으로 열을 참조하며,따라서 테이블 별칭을 허용할 것이 더 짧은 구문입니다.

나는 유일한 사람이 여기에는 정말 미워요?

일반적으로,나는 그들을 사용하지 않는 경우는 제외니다.나는 그냥 정말 싫어하는 무언가를 읽

select a.id, a.region, a.firstname, a.blah, b.yadda, b.huminahumina, c.crap
from table toys as a
inner join prices as b on a.blah = b.yadda
inner join customers as c on c.crap = something else
etc

읽을 때 SQL,나는 다음과 같이 정확하게 알고 내가 무슨 선택하면 그것을 읽을 때;별칭을 실제로 저를 혼동하기 때문에 더 나해 라인의 열기 전에 실제로 표,이름,일반적으로에 대한 정보를 나타내는 데이터는 별칭을 하지 않습니다.아마도 그것은 좋아요 만약 당신의 별명은,그러나 나는 일반적으로 읽기 질문에서 유래와 함께하는 코드를 사용하는 것에 대한 별칭이 없는 이유가 있습니다.(또한 때때로,사람이 만드는 별칭에서 문을 그은 그것을 사용하지 않습니다.왜?)

내가 생각하는 테이블 별칭을 사용한 너무 많기 때문에 많은 사람들이 반대하는 입력합니다.나는 생각하지 않는 좋은 실례,하지만.는 변명하는 이유는 우리는 끔찍한 변수 이름,끔찍한 기능에 약어,잘못된 코드...나는 시간을 가지 유형으로 전체 이름입니다.나는 빠른 타이 퍼지만,그래서 어쩌면 함께 할 수있는 뭔가가 있습니다.(아마도 미래에 때,나는 근겠 재고 내 생각에는 별명이 있습니다.:P)나는 특히 미워 실 테이블 별칭에서 PHP 코드,내가 믿고가 절대적으로 아무 이유 없이 그렇게-만 있어 그것을 입력하면!

난 항상 사용하여 열에는 예선에서 내 문을,그러나 내가 싫어하지 않을 입력하는 많은,그래서 내가 기꺼이 전체 이름을 입력합니다.(부여,나는 당 학대 MySQL 의 탭을 완료합니다.) 지 않는 한 그것의 상황을 나는 별칭을 사용하(부에서 설명한 다른 답변),나를 찾아 여분의 추상화 계층을 복잡하고 불필요합니다.

편집: (이상 나중에 년)내가 다루는 일부와 함께 저장된 절차는 별칭을 사용(난 기록하지 않았다 그들과 나는 이 새로운 프로젝트)및 그들은 그 종류의 고통이다.나는 깨닫는 이유는 내가 좋아하지 않는 별명이기 때문에 그들이 어떻게 정의됩니다.는 방법을 알고 그것은 일반적으로 좋은 연습에 변수를 선언하에서 최고의 범위는?(일반적으로의 시작 부분에서 선?) 별칭에서 SQL 따르지 않는 이 협약을 만드는 나를 갈아요.따라서,나를 검색체 코드에 대해 하나의 별칭을 찾아가 그것입니다(그리고 무엇을 좌절시키는 것은,제가 읽을 통해서 논리하기 전에 내가 찾는 별칭 declaration).지 않은 경우에는,내가 정직하게도 더 나은 시스템.

의 경우 쓰고 저장 프로시저는 다른 누군가를 다루어야 할 것이다,나는 나의 별칭을 정의 코멘트 블록의 시작 부분에서 파일을 참조할 수 있습니다.나는 정직하게 이해할 수 없는 방법 당신들이지 않아 미쳐 없습니다.

Microsoft SQL 쿼리 최적화 도구에서 혜택을 중 하나를 사용하여 완전한 자격을 갖춘 이름 또는 별명이 있습니다.

개인적으로 선호하는 별칭과하지 않는 한 나는 많은 테이블을 그들은 단 하나 문자들.

--seems pretty readable to me ;-)
select a.Text
from Question q
    inner join Answer a
        on a.QuestionId = q.QuestionId

또한 실용적인 기간에 대한 제한 Sql 문자열을 실행할 수 있습-별칭이 제한을 피하기가 더 쉬워졌습니다.

로 언급되기 전에 여러 번,그것은 좋은 연습을 접두사 모든 열 이름을 쉽게 볼 수 있는 열 그리고는 테이블과 별칭은 보다 짧은 전체이블 이름을 그래서 쿼리가 쉽게 읽고 이렇게 이해한다.를 사용하면 좋은싱 계획의 물론입니다.

과를 만드는 경우 또는 읽기 코드의 응용 프로그램을 사용하는 외부에서 저장된 또는 동적으로 생성된 테이블에 이름을,그 다음 없는 별칭을 정말 어렵게 첫눈에 무엇이든 사람이"%s"es 또는 다른 자리에 있습니다.그것은 극단적인 경우,예를 들면 많은 웹 앱을 사용자 정의 할 수 있도록 테이블의 이름을 prefix 에 설치 시간입니다.

쓰면 쿼리를 자(입력으로 편집기를 사용하지 않는 디자이너)나는 항상 별칭을 사용한 테이블에 이름을 그래서 그냥 나만이블 이름을 한다.

정말 읽기 싫어 쿼리를 통해 생성된 디자이너와 테이블의 이름으로 접두어 모든 열 이름입니다.

내 생각에는 유일한 것은 정말 대하여 말한 그들은 과도한 추상화입니다.는 경우에 당신은 좋은 생각이 무엇 별칭을 참조하는(좋은 이름 도움이 됩니다;'a','b','c'꽤 문제가 될 수 있습 특히 읽을 때 문 개월 또는 년 이상),나는 아무 잘못 들어있습니다.

로,조인 그들을 사용하는 경우에는 동일한 테이블(또는 뷰)여러 번,그러나 심지어 밖에 있는 상황 별칭할 수 있는 역할을 명확히하는 데이터 소스의 목적에 특정한다.별칭 이름에 대답을 해보 당신은에 액세스하는 특정 데이터,지 what 데이터입니다.

나는 별칭을 사랑!!!!나는 몇 가지 테스트를 사용하여 그들을 대지 않고 본 처리하는 이익입니다.내 생각 처리하는 이익이 더 높은 것을 처리할 때는 크고 복잡한 데이터 쿼리에는 중첩된다.면할 수 있어요 이를 테스트하기 위해,나는 당신을 알려 드리겠습니다.

필요할 경우 조인하는 테이블을 자체,또는 당신이 사용하는 경우 열에 다시 다 부질...

별칭은 위대한 고려하는 경우에는 나의 조직 테이블 같은 이름:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub-Sub-SubPoint...나의 팀이 사용하는 표준 설정 의 약어를,그래서 추측을 최소화합니다.우리가 말 ProgramInformationDataPoint 단축하 pidp,그리고 제출하는 단 하위.

좋은 것은 당신이 방식으로 사람들이 그것에 동의하는,그것은 그 HAYUGE 파일을 조금 작고 쉽게 관리할 수 있습니다.나를 위해 적어도,적은 수의 캐릭터를 전하는 같은 정보 보 좀 더 쉽게 갈에습니다.

나는 같은 명시적 긴 테이블 이름(어렵지 않게 찾아볼 수 있 100 개 이상의 캐릭터)사용하고 있기 때문에 많은 테이블과 이름이 없는 명시적,나를 얻을 수 있습으로 혼란을 각각 테이블에 저장합니다.

그래서 때 나는 쿼리를 작성,내가 사용하는 경향이 있는 짧은 별칭을 의미가 있는 범위 내에서 쿼리를 만드는 코드를 훨씬 더 읽을 수 있습니다.

난 항상 사용하여 별칭에서 쿼리를 내고 이것은 부분의 코드 가이드북에 회사입니다.먼저 당신이 필요로하는 모든 별칭이나 테이블 이름이 있을 때는 열과 동일한 이름에 가입 테이블이 있습니다.내 생각에는 별칭을 가독성을 개선에서 복잡한 쿼리와 신속하게 확인하려면 각각의 위치는 열이 있습니다.우리는 심지어 별칭을 사용으로 한 테이블을 쿼리하기 때문에,경험에는 다음과 같는 단일 테이블을 쿼리시설 하나의 테이블 길이입니다.

이럴,그것은 진짜로 중요하지 않은 짧은 테이블는 이름의 의미,저는 경우에 근무 데이터베이스에서 테이블에 이름 같은 것을 수 있습 VWRECOFLY 또는 다른 임의의 문자열(에 의해 지시되는 회사 정책)는 정말 나타내는 사용자가에서,그래서는 경우에는 내가 찾는 별칭을 정말 도움을 만드는 훨씬 더 읽을 수 있습니다.(사용자.사용자 이름은 많이 더 감각 다음 VWRECOFLY.사용자 이름)

나는 항상 별칭을 사용하기 때문을 얻을 적절한 성능을 MSSQL 당신이 필요하는 접두사를 가진 스키마에서 모든다.그래서 당신은 많이 볼 수 있습니다.

선택 사람입니다.이름 서
dbo.사람은 사람으로

나는 항상 별칭을 사용할 때 쓰는 쿼리를 처리합니다.일반적으로 시도하고 줄이블 이름이 1 또는 2 대표 문자입니다.그래서 사용자가 u 고 debtor_transactions 가 dt 등등...

저장에 입력하고 여전히 전달 일부 의미입니다.

짧은 이름이 더 읽기를 나 뿐입니다.

사용하지 않는 경우에는 별명을,그것이 버그에서 당신의 코드는 무슨 일이 기다리고 있습니다.

SELECT Description -- actually in a
 FROM
 table_a a,
 table_b b
 WHERE
 a.ID = b.ID

무엇을 할 때 일어나 작은 것 같이 열을 추가하라고 설명하 Table_B.즉,당신은 당신을 얻을 것 오류가 있습니다.열을 추가하는 필요하지 않 break 니다.나는 결코 작성하기를 참조하십시오에 좋은 코드 버그,코드로 필요악이다.

별칭을 때 필요한 테이블을 가진 열가 동일한 이름입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top