데이터베이스에 제약이 적용되는 이유는 무엇입니까? 코드에 넣는 것이 더 유연하지 않습니까?
데이터베이스 구현에 대한 초보자 책을 읽고 있으므로 초보자로 요구하고 있습니다. 이 엔티티 모델을 포함하여 데이터베이스를 설계했다고 가정 해 보겠습니다.
entity type | sub-types
----------------+--------------------------------------------
Person | Employee, Student, ...
Student | Graduate, Undergraduate, ...
Employee | Teacher, Administrator, ...
현재 제약 사항 :
- 시스템에 등록 된 사람은 학생 또는 직원 만 될 수 있습니다.
- 개인 실체는 사회 번호의 고유성을 필요로하며, 우리는 모든 사람이 하나의 고유 한 개체 (일명 충분한 기본 키) 만 가지고 있다고 가정합니다 . (# 1 참조)
나중에 우리는 숫자 1을 제거하기로 결정합니다. 언젠가 대학에서 Teacher( Employee하위 유형)도 Student자유 시간에 코스를 수강 한다고 결정하면 수천, 수백만, 수십억을 가질 수있는 데이터베이스 디자인을 변경하는 것이 훨씬 어렵습니다. 코드의 논리를 변경하기보다는 수십억의 항목 : 학생과 직원으로 사람을 등록 할 수없는 부분.
(그것은 매우 불가능하지만 지금은 다른 것을 생각할 수 없습니다. 분명히 가능합니다).
왜 코드가 아닌 데이터베이스 디자인 에서 비즈니스 규칙에 관심이 있습니까?
# 1 : 7 년 후의 메모, 실제 사례 :
저는 실수로 인해 발행 된 SSN이 여러 사람인 동일한 SSN과 중복되는 정부를 보았습니다. 원래 DB를 설계하는 사람들은 데이터베이스에서이 고유 제한 조건을 적용하지 않는 실수를 저질렀습니다. (그리고 나중에 원래 응용 프로그램의 버그-공유 데이터베이스를 사용하고 제약 조건을 배치, 확인 및 시행 할 위치에 동의하지 않는 여러 응용 프로그램? ...).
이 버그는 시스템 과 그 이후에 개발 된 모든 시스템에서 계속 살아남을 것이며, 이후 수년 동안 원래 시스템의 데이터베이스에 의존합니다. 여기에서 답을 읽으면서 가능한 한 많은 실제 제약 조건을 데이터베이스에 현명하게 (맹목적으로는 아님) 가능한 모든 제약 조건에 적용하는 방법을 배웠습니다.