### 핵심 개념: `CASCADE CONSTRAINT` 옵션 `CASCADE CONSTRAINT`는 데이터베이스에서 `DROP TABLE` 명령을 사용할 때, 해당 테이블과 연관된 모든 제약 조건(특히 외래 키 제약 조건)을 함께 삭제하는 옵션입니다. 이 옵션은 기본 테이블을 삭제할 때 해당 테이블을 참조하는 다른 테이블의 외래 키 제약 조건이나 관련된 데이터를 자동으로 삭제하도록 합니다. ### 예시를 통한 설명 #### 예시 데이터베이스 테이블 1. **`Department` 테이블** (부서 정보) - 부서의 기본 정보를 저장하는 테이블입니다. - `DepartmentID`는 기본 키입니다. ```sql CREATE TABLE Department ( DepartmentID INT PRIMARY KEY, DepartmentName VARCHAR(100) ); ``` 2. **`Employee` 테이블** (직원 정보) - 각 직원이 어느 부서에 속해 있는지 저장하는 테이블입니다. - `DepartmentID`는 외래 키로, `Department` 테이블을 참조합니다. ```sql CREATE TABLE Employee ( EmployeeID INT PRIMARY KEY, EmployeeName VARCHAR(100), DepartmentID INT, FOREIGN KEY (DepartmentID) REFERENCES Department(DepartmentID) ); ``` ### 시나리오 위의 두 테이블이 존재하는 상황에서, `Department` 테이블을 삭제하려고 한다고 가정해보겠습니다. 하지만 `Employee` 테이블이 `Department` 테이블의 `DepartmentID`를 외래 키로 참조하고 있기 때문에, 단순히 `DROP TABLE Department;` 명령을 실행하면 오류가 발생합니다. 이 오류는 `Department` 테이블이 다른 테이블에 의해 참조되고 있기 때문에 발생합니다. 이때, **`CASCADE`** 옵션을 사용하면 이러한 제약 조건을 우회하고, 관련된 모든 외래 키 참조를 삭제하면서 테이블을 삭제할 수 있습니다. ### CASCADE CONSTRAINT 사용 예시 ```sql DROP TABLE Department CASCADE CONSTRAINTS; ``` 위 명령은 `Department` 테이블을 삭제하면서, `Employee` 테이블의 외래 키 제약 조건을 자동으로 삭제합니다. 이로 인해, `Employee` 테이블에서 `DepartmentID`와 관련된 모든 외래 키 제약이 제거되며, `Department` 테이블이 정상적으로 삭제됩니다. ### 핵심 개념 정리 - **`CASCADE CONSTRAINTS`**는 **Oracle SQL**에서 사용되는 옵션으로, 삭제할 테이블이 다른 테이블과 외래 키로 연결되어 있을 때, 외래 키 제약 조건을 자동으로 삭제해 줍니다. - 다른 SQL 데이터베이스(예: MySQL, PostgreSQL 등)에서도 유사한 기능을 제공합니다(이 경우 `CASCADE`만 사용하기도 합니다). 이 개념은 데이터베이스 관리에서 테이블 간의 종속성을 관리하고, 특정 테이블을 삭제할 때 발생할 수 있는 참조 무결성 문제를 해결하는 데 유용합니다.