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