2019년 11월 20일 수요일

[mssql] DB KEY와 notNULL의 차이

차이점:

PK 는 테이블에 오직 한개만 생성할 수 있습니다.
PK 의 목적데이터 무결성입니다.

INDEX 는 여러개 생성 가능하구요.
INDEX 의 목적빠른 자료 조회입니다.



pk와 uk는 일단 데이터 무결성 이라는 근본 취지는 동일합니다.(nuall사용여부만 다르죠)
단지, pk는 테이블당 하나만 만들수있고 pk를 만들면 unique, not null 제약조건은 기본적으로 따라 오게 되어 있습니다.
그렇기 때문에 물리모델에서 본다면 pk나 unique + not null 이나 동일합니다.


unique를 not null로 만들면 unique와 PK 둘다 기능은 같습니다만,
Unique Index + not null은 자체의 unique+not null데이터를 유지하려는 의미가 강한 것이고 이는 굳이 따지자면 데이터무결성 중 실체무결성의 의미입니다.
PK는 관계에 중심을 둔 의미로 FK까지를 고려하여 의미를 이해하시는 것이 좋을 듯 합니다.
한 테이블의 FK제약은 다른 관계 테이블의 PK제약값이 반드시 존재해야 한다는 것 입니다.
이를 또한 데이터무결성 중 참조무결성이라고 합니다.

primary key는 다른테이블과 연관관계를 가지기위한 말그대로 키인것이다.



NotNull은 데이터가 무조건 있어야 한다.



primary key(pk) : 테이블에서 대표되는 key.즉 키에 해당하는 컬럼은 unique해야 되고(여기에서 unique index랑 혼돈되나 보네요..) not null이여야 됩니다.(null은 대표되는 key가 될수 없습니다.) 그래서 연관관계에 사용될수 있는 key입니다.

unique index : 테이블 컬럼에서 unique한 컬럼만 잡을수 있는 index입니다. 해당컬럼을 조회조건으로 가장 빠르게 조회할수 있게 index를 잡으며 무결성체크에도 사용됩니다.


예로 회원번호와 아이디가 있을 경우 회원번호를 pk로 잡고 아이디를 유니크인덱스로 잡아놓으면 아이디의 중복등록도 방지되고 아이디로 조회했을때 유니크인덱스를 타기 때문에 빠르게 조회가 됩니다.

댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...