이러한 방식으로 열을 저장하는 주된 단점은 행 수가 늘어남에 따라 저장 공간에 존재한다는 것입니다.
문자 열이 아니라 외래 키가있는 종교 옵션의 추가 테이블을 만드는 것을 거의 수정하지 않고 고정 된 선택 집합이있는 경우 문자 열 대신에 ENUM()
을 사용할 수 있습니다. . 그러나 선택 사항이 유동적 일 경우 표준화 규칙은 사용자 테이블에 외래 키가있는 자체 테이블에 선택 항목을 배치하는 것을 선호합니다.
다른 테이블에 보관할 수있는 저장 공간 외에 다른 장점이 있습니다. 그것들을 수정하는 것은 간단합니다. Christianity
에 Christian
을 변경하려면, 당신이 (당신이 행을 많이 가지고 있고 종교는 인덱싱되지 않은 경우) 잠재적으로 비용을하는 것이 아니라,
UPDATE users SET religion='Christianity' WHERE religion='Christian'
을 종교 테이블에서 하나의 변화를 만들 수 있습니다 ... 당신은 할 수 있습니다 훨씬 간단하고 저렴합니다.
UPDATE religions SET name='Christianity' WHERE id=123
물론 종교 테이블을 입력하여 데이터 무결성을 강화할 수도 있습니다. 맞춤법이 틀린 Christain
과 같은 잘못된 값을 삽입하는 것은 불가능합니다.
나는 그런 식으로 생각하고 싶습니다. – Taymon
이 모델에서 데이터 수정 예외가 실제로 어떤 제약 조건 (CHECK 또는 FOREIGN KEY)없이 방지됩니까? (ORM 등을 통한 클라이언트 코드 적용을 무시함) – gbn
당신이 제기하는 좋은 점입니다. CHECK는 넣을 수 있지만 데이터 수정 소스가 없습니다. 어떤 원자 데이터 값에 관해서도 같은 질문을 할 수 있습니다. 나는 데이터 수정 예외를 방지하는 것이 항상 필요하다고 생각하지 않는다. 동의하지 않으셔도됩니다. – user