1일 1개념정리 24.08.09.금 ~
큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.
무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#41. SQL 레퍼런스
DB공부를 하다가 레퍼런스라는 게 나왔다.
grant reference (dept_name) on department to Mariano;
일단 이게 뭘까 ? Select insert 이런 것에만 익숙한 나에겐 생소했다. SQL 레퍼런스에 대해 알아봅시다.
References
이는 외래키를 생성할 때 필요한 기능이다. 예를 들면, 학생 테이블에서 "학과이름"이라는 열이 "학과"테이블에 있는 학과이름 컬럼을 참조해야한다면 ? 학생 테이블의 값은 학과 테이블의 값을 가져야한다는 제약이 걸린다. 이런 관계를 설정할 때 레퍼런스를 사용한다. 즉, 외래키 제약을 걸고 특정 열을 참조할 수 있도록 허용하는 권한이다.
주의할 것은, 참조만 허용할 뿐 해당 테이블의 데이터를 읽는 등의 권한을 준다는 것은 아니다. 별개의 내용이다.
grant reference (dept_name) on department to Mariano;
그니까 처음에 있었던 SQL 예시를 다시 보면 마리아노가 department 테이블의 dept_name 열을 참조하는 외래키를 만드는 권한을 주는 것이지, 읽을 수 있다는 것과는 별개이다.
왜 필요한가 ?
권한은 특정 사용자가 다른 테이블의 열을 참조하는 외래 키를 생성할 수 있도록 허용한다. 이 권한이 없으면 Mariano는 해당 열을 참조하는 외래 키를 생성할 권한이 없다.
이 권한이 필요한 이유는 무결성을 지키고 테이블간 상호작용을 제어하기 위함이다. 테이블간 종속성을 만드는 것은 허가된 사용자만 할 수 있다는 것이다.
레퍼런스로 외래키 생성하면 Select, Insert 등의 작업 가능 ?
외래 키 참조 권한을 가진다 해서 해당 테이블을 바로 읽을 수 있는 것은 아니다. 레퍼런스 권한은 그냥 특정 열을 외래키로 참조하는 것을 허용한다는 것일 뿐, 그 열을 포함해서 데이터를 조회하거나 수정하는 등의 권한을 주는 것이 아니다. 그래서 예를들면 다음과 같이 따로 권한을 부여받아야한다.
GRANT SELECT ON department TO Mariano;
'1일 1개념정리 (24년 8월~) > 데이터베이스' 카테고리의 다른 글
1일1개 (49) - 스키마랑 테이블 같은 거 아닌가요 ? (0) | 2024.10.03 |
---|---|
1일1개 (43) - DB key (0) | 2024.09.27 |
1일1개 (32) - 아니 데이터베이스에 왜 수학기호가 나오냐고 (2) | 2024.09.11 |
1일1개 (30) - Redis (0) | 2024.09.09 |
1일1개 (26) - 몽고DB (0) | 2024.09.05 |