Search

물리적 모델링 (제약조건)

제약 조건

데이터베이스를 사용할 때는 정확성을 지키기 위해서 항상 특정 조건을 만족시키는 데이터 값들만 저장하고 싶은 경우들이 존재
테이블에 성별을 저장하는 컬럼이 있다고 하면 여기 저장하는 값은 항상 'm' 또는 'f'여야 한다
이메일을 저장하는 컬럼에 저장되는 값은 항상 문자열 "@"가 있어야 한다
고유 학생 번호는 다른 학생과 겹치면 안 되며, 항상 8자리 정수여야 한다.. 등등
이렇게 특정 컬럼이 항상 만족해야 되는 조건들을 데이터 모델링에서는 제약 조건, 영어로는 constraint이라고 부릅니다.
다행히도 대부분의 DBMS들은 테이블들에 제약 조건들을 걸게 해주는 기능이 있습니다.
데이터 타입도 일종의 제약 조건.
"겹치는 값이 없어야 한다", "값이 특정 범위, 길이, 또는 값이어야 한다".
이런 내용들을 미리 정해놓고, 어기는 값을 저장하려고 시도하면 자체적으로 오류를 내서 원하지 않는 값이 저장되는 걸 미리 막아준다
ALTER TABLE student ADD CONSTRAINT st_rule CHECK (registeration_number < 3000000); -- 제약사항 삭제 ALTER TABLE student DROP CONSTRAINT st_rule; ALTER TABLE student ADD CONSTRAINT st_rule CHECK (email LIKE '%@%' AND gender IN ('m','f')); INSERT INTO student (name, registration_number, email, gender) VALUES ('김준성', 20130827, '^^ 장난쳐야지', 'm'); -- 'Check constraint 'st_rule' is violated.'
SQL
복사
물리적 모델링 범위에서는 이런 제약 조건들을 실제 데이터베이스에 걸어주는 게 아니라 찾아내야 합니다.
이 단계에서는 비즈니스 룰을 사용하거나, 저장하려는 데이터의 성질을 파악해서 각 테이블, 또는 컬럼에 대한 제약 조건들을 찾아냅니다.
제약 조건은 ERM에 표현하기 힘들기 때문에, 따로 종이나 메모 같은 곳이 이 내용들을 하나씩 적어준 후, 실제로 데이터베이스에 계획된 내용을 반영할 때 SQL 또는 ORM을 사용