복붙노트

[SQL] SQL 테이블 별칭 - 좋은 또는 나쁜? [닫은]

SQL

SQL 테이블 별칭 - 좋은 또는 나쁜? [닫은]

SQL에서 테이블 별칭을 사용하는 장점과 단점은 무엇입니까? 내가 (여기서 대형 /과 문을 통해 특히 읽을 때)가 코드가 덜 읽을 수 있도록 생각하는 나는 개인적으로 그들을 피하기 위해 노력하지만, 나는이 모든 카운터 포인트 청각에 관심이있을 것입니다. 때 일반적으로 사용하는 테이블 별칭에 좋은 아이디어이며, 당신은 어떤 선호하는 포맷을해야합니까?

해결법

  1. ==============================

    1.고도로 정규화 스키마를 처리 할 때 표 별명은 필요악이다. 나와 함께 곰, 그것은 7 사람의 이름, 주소, 전화 번호, 회사의 제휴를 포함하는 깨끗하고 완전한 기록 등을 얻기 위해 조인 취할 수 있도록 예를 들어, 나는이 DB에 건축가 아니에요.

    고도로 정규화 스키마를 처리 할 때 표 별명은 필요악이다. 나와 함께 곰, 그것은 7 사람의 이름, 주소, 전화 번호, 회사의 제휴를 포함하는 깨끗하고 완전한 기록 등을 얻기 위해 조인 취할 수 있도록 예를 들어, 나는이 DB에 건축가 아니에요.

    오히려 다소 표준 단일 문자 별칭보다, 나는처럼 보이는까지 위의 예제의 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
    

    ... 등

  2. ==============================

    2.글쎄, 당신은 당신이 한 쿼리에서 두 번 같은 테이블에 가입 할 때처럼, 그것들을 사용해야합니다 경우가 있습니다.

    글쎄, 당신은 당신이 한 쿼리에서 두 번 같은 테이블에 가입 할 때처럼, 그것들을 사용해야합니다 경우가 있습니다.

    그것은 또한 당신이 테이블에서 고유 열 이름이 어떠했는지에 따라 달라집니다. 우리의 기존 데이터베이스에서 우리는 잘 테이블 별명을 지원하지 않았다와 호환되면 하나의 고대 데이터베이스 시스템 우리가 있었던 이유만으로, 테이블에서 축약 형태에 따른 모든 컬럼에 대해 3 문자 접두어가 있습니다.

    당신이 열 개 이상의 테이블에서 발생하는 이름, 열 참조의 일부로 테이블 이름을 지정이있는 경우 필수입니다, 따라서 테이블 별칭은 짧은 구문 수 있습니다.

  3. ==============================

    3.난 정말 그들을 미워 여기에 유일한 사람 있습니까?

    난 정말 그들을 미워 여기에 유일한 사람 있습니까?

    I가하지 않는 한 일반적으로, 내가 그들을 사용하지 마십시오. 난 정말 뭔가를 읽을 필요가 싫어

    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을 읽을 때, 나는 그것을 읽을 때 내가 선택하고있어 정확히 알고 싶습니다; 내가 실제로 일반적으로 별명이하지 않는 데이터에 대한 정보를 나타내는 테이블 이름에 도착하기 전에 열 라인을 통해 강타있어 때문에 별명은 실제로 나를 더 혼란. 당신이 별명을했다,하지만 일반적으로 더 좋은 이유에 대해 별칭을 사용하는 것 같다 코드에 StackOverflow에 대한 질문을 읽으면 아마 괜찮아. (또한, 때로는 누군가는 성명에서 별명을 작성하고 그냥 사용하지. 왜?)

    나는 많은 사람들이 타이핑을 싫어하기 때문에 테이블 별칭을 너무 많이 사용된다고 생각합니다. 나는 비록 좋은 변명이 생각하지 않습니다. 그 이유는 우리가 끔찍한 변수 이름, 끔찍한 기능 약어, 나쁜 코드로 끝날 이유는 ... 내가 전체 이름을 입력 할 시간이 걸릴 것입니다. 그래서 어쩌면이 함께 할 수있는 뭔가가하지만, 빠른 타이 퍼입니다. (나는 손목 터널있어 때 어쩌면 미래에, 나는 별명에 내 의견을 재고 있습니다 : P를.) 나는 특히 내가 그렇게해야 할 이유가 전혀 없다 생각 PHP 코드, 테이블 별칭에 걸쳐 실행 싫어 - 당신은 한 번만 입력 할 수있어!

    난 항상 내 문에서 열 한정자를 사용하지만, 나는 기꺼이 전체 이름을 여러 번 입력 할 수 있도록 내가 많이 입력하는 싫어하지 않아요. (부여, 내가 MySQL을의 탭 완성을 남용 않습니다.) 그것이 내가 (일부는 다른 답변에서 설명한 것처럼) 별칭을 사용해야하는 상황이 아니라면, 나는 추상화 복잡하고 불필요한의 추가 레이어를 찾을 수 있습니다.

    편집 : (년 이상 이상) 내가 사용하는 별칭이 (내가 그들을 쓰지 않았고, 나는이 프로젝트에 새로 온 사람), 그리고 그들이 어떤 고통의있어 몇 가지 저장 프로 시저를 처리하고 있습니다. 나는 별명처럼하지 않는 이유 때문에 그들이 정의하는 방법이다 것을 알고 있습니다. 당신은 일반적으로 좋은 연습이 범위의 상단에 선언 변수에 얼마나 알아? (그리고 일반적으로 라인의 시작 부분에?) SQL의 별칭은 내 이빨을 갈기하게이 규칙을 따르지 않습니다. 따라서, 나는 (그리고 좌절이 무엇인지, 난 내가 별칭 선언을 발견하기 전에 논리를 읽을 필요) 곳을 찾는 하나의 별명에 대한 전체 코드를 검색 할 수 있습니다. 그것은이 아니었다면, 솔직히 더 나은 시스템을 같은 수 있습니다.

    나는 지금까지 다른 사람이, 내가 참고로, 파일의 시작 부분에 주석 블록 내 별명 정의를 가하고있어 처리해야 할 것이라는 저장 프로 시저를 작성하는 경우. 솔직히 너희들이없이 미쳐하지 않는 방법을 이해 할 수 없다.

  4. ==============================

    4.쿼리 읽고, 따라서 쉽게 이해할 수 있도록 전체 테이블 이름보다 짧은 별칭 -이 전에 여러 번 언급 한 바와 같이, 쉽게하는 테이블에 속한 컬럼 볼에 모든 열 이름을 앞에 좋은 연습입니다. 당신은 물론 좋은 별명 방식을 사용하는 경우.

    쿼리 읽고, 따라서 쉽게 이해할 수 있도록 전체 테이블 이름보다 짧은 별칭 -이 전에 여러 번 언급 한 바와 같이, 쉽게하는 테이블에 속한 컬럼 볼에 모든 열 이름을 앞에 좋은 연습입니다. 당신은 물론 좋은 별명 방식을 사용하는 경우.

    만들거나 외부에 저장 또는 동적으로 테이블 이름을 생성 사용하는 응용 프로그램의 코드를 읽으면 그리고 별칭없이 모든 사람들 "% S"ES 또는 다른 자리가 서 무엇을 첫 눈에 알 정말 어렵다. 예를 들어 많은 웹 애플리케이션은 설치시 테이블 이름 접두사를 사용자 정의 할 수있는 것은, 극단적 인 사건이 아니다.

  5. ==============================

    5.하나 완전한 이름이나 별칭을 사용하는 마이크로 소프트 SQL 쿼리 최적화의 혜택을 제공합니다.

    하나 완전한 이름이나 별칭을 사용하는 마이크로 소프트 SQL 쿼리 최적화의 혜택을 제공합니다.

    개인적으로 나는 별칭을 선호하고, 나는 테이블을 많이 가지고하지 않는 한 그들은 하나의 편지 것들 경향이있다.

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

    별칭을 방지하기 위해이 제한 쉽게 - 얼마나 오랫동안 SQL 문자열을 실행할 수에 실질적인 제한도 있습니다.

  6. ==============================

    6.나는 항상 테이블 이름에 별칭을 사용 (편집기에 입력하여 및 디자이너를 사용하지 않는) 쿼리 자신을 작성하는 경우 너무 난 단지 그레그 정말와 디자이너에 의해 생성 된 쿼리를 읽기 싫어 전체 테이블 이름을 입력해야 모든 열 이름에 접두어로 전체 테이블의 이름입니다.

    나는 항상 테이블 이름에 별칭을 사용 (편집기에 입력하여 및 디자이너를 사용하지 않는) 쿼리 자신을 작성하는 경우 너무 난 단지 그레그 정말와 디자이너에 의해 생성 된 쿼리를 읽기 싫어 전체 테이블 이름을 입력해야 모든 열 이름에 접두어로 전체 테이블의 이름입니다.

  7. ==============================

    7.정말 그들에 대해 말하는 유일한 것은 과도한 추상화 가정하자. 별칭가 참조하는 어떤 좋은 아이디어가됩니다 (좋은 명명 도움이, 'a', 'b'가, 'C'는 나중에 문 달 또는 몇 년을 읽는 특히 상당히 문제가 될 수있다), 나는 아무것도 잘못 참조 앨리어싱과 함께.

    정말 그들에 대해 말하는 유일한 것은 과도한 추상화 가정하자. 별칭가 참조하는 어떤 좋은 아이디어가됩니다 (좋은 명명 도움이, 'a', 'b'가, 'C'는 나중에 문 달 또는 몇 년을 읽는 특히 상당히 문제가 될 수있다), 나는 아무것도 잘못 참조 앨리어싱과 함께.

    다른 사람이 말했듯이, 당신은 같은 테이블 (또는 뷰)를 여러 번 사용하는 경우를 필요로 합류하지만, 밖에서도 그 상황은, 별명은 특정 상황에서 데이터 소스의 목적을 명확히하는 역할을 할 수 있습니다. 별명의 이름으로, 당신은 데이터가없는 어떤 특정 데이터를 액세스하는 이유에 대답하려고합니다.

  8. ==============================

    8.나는 별칭을 사랑 !!!! 난 안 대를 사용하여 몇 가지 테스트를 수행하고 일부 처리 이득을 보았다. 내 생각 엔 당신이 더 큰 데이터 세트와 없을 때보 다 복잡한 중첩 된 쿼리를 처리 할 때 이익이 더 높을 것입니다 처리합니다. 나는이를 테스트 할 수있어, 내가 알려 드리겠습니다.

    나는 별칭을 사랑 !!!! 난 안 대를 사용하여 몇 가지 테스트를 수행하고 일부 처리 이득을 보았다. 내 생각 엔 당신이 더 큰 데이터 세트와 없을 때보 다 복잡한 중첩 된 쿼리를 처리 할 때 이익이 더 높을 것입니다 처리합니다. 나는이를 테스트 할 수있어, 내가 알려 드리겠습니다.

  9. ==============================

    9.하위 쿼리에 열을 다시 사용하는 경우 당신은 당신이 자신을 테이블에 가입려고하는 경우에 그들을 필요하거나 ...

    하위 쿼리에 열을 다시 사용하는 경우 당신은 당신이 자신을 테이블에 가입려고하는 경우에 그들을 필요하거나 ...

  10. ==============================

    10.내 조직이 같은 테이블 이름을 가지고 고려하는 경우 별칭은 중대하다 : SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub - 하위 SubPoint ... 추측이 최소화되도록 내 팀, 약어의 꽤 표준 세트를 사용합니다. 우리는 하위에 말의 pidp 단축 ProgramInformationDataPoint 및 제출을해야합니다.

    내 조직이 같은 테이블 이름을 가지고 고려하는 경우 별칭은 중대하다 : SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub - 하위 SubPoint ... 추측이 최소화되도록 내 팀, 약어의 꽤 표준 세트를 사용합니다. 우리는 하위에 말의 pidp 단축 ProgramInformationDataPoint 및 제출을해야합니다.

    좋은 것은 당신이이 방식으로 가야하고 사람들이 동의하면, 그것은 그 HAYUGE 파일 그냥 조금 작고 쉽게 관리 할 수 ​​있다는 것입니다. 나를 위해 적어도 이하의 문자는 같은 정보가 내 머리에 좀 더 쉽게 갈 것으로 보인다 전달합니다.

  11. ==============================

    11.나는 많은 테이블을 사용하고 이름을 명시하지 않은 경우, 내가 무엇을 각 테이블 저장소에 혼동 얻을 수 있기 때문에 긴 명시 적으로 테이블 이름을 (그것은 100 개 이상의 문자로 드문 일이 아니에요) 좋아한다.

    나는 많은 테이블을 사용하고 이름을 명시하지 않은 경우, 내가 무엇을 각 테이블 저장소에 혼동 얻을 수 있기 때문에 긴 명시 적으로 테이블 이름을 (그것은 100 개 이상의 문자로 드문 일이 아니에요) 좋아한다.

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

  12. ==============================

    12.난 항상 내 쿼리에서 별칭을 사용하고 내 회사의 코드 가이드 북의 일부입니다. 우선 당신은 가입 테이블에서 동일한 이름을 가진 열이있는 별칭 또는 테이블 이름이 필요합니다. 제 생각에는 별칭은 복잡한 쿼리의 가독성을 향상 나를 빨리 각 컬럼의 위치를 ​​볼 수 있습니다. 경험이 보여 주었다 때문에 우리는 심지어, 단일 테이블 쿼리에 별칭을 사용하는 오래 체류 단일 테이블 본건 단일 테이블 쿼리.

    난 항상 내 쿼리에서 별칭을 사용하고 내 회사의 코드 가이드 북의 일부입니다. 우선 당신은 가입 테이블에서 동일한 이름을 가진 열이있는 별칭 또는 테이블 이름이 필요합니다. 제 생각에는 별칭은 복잡한 쿼리의 가독성을 향상 나를 빨리 각 컬럼의 위치를 ​​볼 수 있습니다. 경험이 보여 주었다 때문에 우리는 심지어, 단일 테이블 쿼리에 별칭을 사용하는 오래 체류 단일 테이블 본건 단일 테이블 쿼리.

  13. ==============================

    13.IMHO, 그것은 테이블 이름이 정말 사용자를 나타냅니다 VWRECOFLY 또는 (회사의 정책에 의해 결정) 다른 임의의 문자열과 같이 할 수있는 곳 계기가 데이터베이스에 작업에 메이크업 감각, 내가 그렇게에서, 가지고 짧은 테이블 이름을 정말 중요하지 않습니다 케이스 것을 나는 별명에게 코드가 훨씬 더 쉽게 읽을 수 있도록하기 위해 정말 도움을 찾을 수 있습니다. (users.username는 더 sence VWRECOFLY.username을 많이합니다)

    IMHO, 그것은 테이블 이름이 정말 사용자를 나타냅니다 VWRECOFLY 또는 (회사의 정책에 의해 결정) 다른 임의의 문자열과 같이 할 수있는 곳 계기가 데이터베이스에 작업에 메이크업 감각, 내가 그렇게에서, 가지고 짧은 테이블 이름을 정말 중요하지 않습니다 케이스 것을 나는 별명에게 코드가 훨씬 더 쉽게 읽을 수 있도록하기 위해 정말 도움을 찾을 수 있습니다. (users.username는 더 sence VWRECOFLY.username을 많이합니다)

  14. ==============================

    14.당신이 항상 스키마를 접두어가 필요 MSSQL에 적절한 성능을 얻을 수 있기 때문에 난 항상 별칭을 사용합니다. 당신을 많이 볼 수 있습니다 그래서

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

  15. ==============================

    15.쿼리를 작성할 때 난 항상 별칭을 사용합니다. 일반적으로 나는 시도하고 1 개 또는 2를 대표 문자로 테이블 이름을 축약. 사용자 그래서 U이되고 debtor_transactions는 등 DT됩니다 ...

    쿼리를 작성할 때 난 항상 별칭을 사용합니다. 일반적으로 나는 시도하고 1 개 또는 2를 대표 문자로 테이블 이름을 축약. 사용자 그래서 U이되고 debtor_transactions는 등 DT됩니다 ...

    그것은 입력에 저장하고 여전히 의미를 전달한다.

    짧은 이름이 아니라 나에게 더 읽을 수 있습니다.

  16. ==============================

    16.당신이 별칭을 사용하지 않는 경우, 그것은 당신의 코드에서 버그를 그냥 일이 기다리고 있습니다.

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

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

    당신이 Table_B에 설명라는 열을 추가 같은 약간의 일을하면 어떻게됩니까. 맞아요, 당신은 오류가 발생합니다. 열을 추가하는 것을 중단 할 필요가 없습니다. 나는 필요악으로, 좋은 코드, 버그없는 코드를 작성 볼 수 없습니다.

  17. ==============================

    17.동일한 이름이 열이있는 테이블을 조인 할 때 별칭이 필요합니다.

    동일한 이름이 열이있는 테이블을 조인 할 때 별칭이 필요합니다.

  18. from https://stackoverflow.com/questions/11043/sql-table-aliases-good-or-bad by cc-by-sa and MIT license