Normal Form(NF): 관계형 데이터베이스를 설계할 때 다양한 규범적 요구 사항을 따라 합리적인 관계형 데이터베이스를 설계합니다. 이러한 서로 다른 규범적 요구 사항은 서로 다른 패러다임으로 제시됩니다. 패러다임 데이터베이스 중복성이 높을수록. 얻을수록 나는 작아진다. 그러나 중복성을 줄이기 위해 맹목적으로 패러다임을 추구하는 것은 실제로 데이터 읽기 및 쓰기의 효율성을 감소시키는 경우가 있습니다. 이때 패러다임을 뒤집어 공간을 활용하여 시간을 교환해야 합니다. 데이터 테이블의 테이블 구조가 준수하는 특정 설계 표준 수준으로 대략적으로 이해될 수 있습니다.
위의 내용은 첫 번째 패러다임에 부합하지 않습니다. 왜냐하면 구매와 판매는 구매수량, 구매단위, 판매단위, 판매수량 등으로 더 세분화될 수 있기 때문입니다. 다음은 첫 번째 패러다임을 충족합니다.
3NF
다양한 제약
NULL이 아님
Non-null 제약 조건, 이 열의 값이 NULL이 될 수 있는지 여부, 여기서 한 가지가 매우 중요합니다. 많은 필드(시간 제외)의 기본값은 지정하지 않으면 NULL이므로 NULL=NULL을 제외하고 다른 값은 "", 0 등과 같은 NULL이 아닙니다.
필드를 NOT NULL로 수정:
으아악여기에는 또 다른 문제가 있습니다. 기본값은 NULL이지만 필드가 삽입되도록 지정되지 않았기 때문입니다.
으아악사용자 이름 열의 값이 null 문자이고 기본값이 NULL인 것을 확인할 수 있습니다.
logip의 기본값은 NULL이지만, NULL값의 삽입이 허용되므로 여기에는 NULL값이 표시된다.
확인해 보세요~ NULL이 기본값이지만 NULL 값은 허용되지 않으므로 이제 사용자 이름 필드에 값이 없다는 의미입니다. SQL_MODE 때문에 경고만 표시되고 오류가 직접 보고되지는 않습니다. SQL_MODE를 'STRICT_ALL_TABLES'로 지정하면 삽입 시 다음 오류가 보고됩니다.
으아악unique는 고유 제약 조건을 나타냅니다. 고유 제약 조건은 데이터의 고유성을 보장하기 위해 지정된 테이블의 열 또는 열 조합을 반복할 수 없음을 의미합니다. 비록 고유 제약 조건이 중복 값을 허용하지 않지만 여러 null이 될 수 있으며. 동일한 테이블에는 여러 개의 열을 결합하는 제약인 고유 제약 조건이 여러 개 있을 수 있습니다. UNIQUE 제약 조건을 생성할 때 UNIQUE 제약 조건 이름을 지정하지 않으면 기본적으로 열 이름과 동일하게 지정되며 MySQL은 기본적으로 UNIQUE 제약 조건의 열에 고유 인덱스를 생성합니다.
고유 제약 조건 추가:
으아악기본 키 제약 조건은 고유 제약 조건 + null이 아닌 제약 조건의 조합과 동일합니다. 기본 키 제약 조건 열은 중복이나 null 값을 허용하지 않습니다. 여러 열을 결합하는 기본 키 제약 조건인 경우 해당 열 중 어떤 열도 null 값을 가질 수 없으며, 결합된 값이 반복되는 것도 허용되지 않습니다. 각 테이블은 최대 하나의 기본 키 만 허용합니다. 기본 키 제약 조건은 열 수준이나 테이블 수준에서 생성될 수 있습니다. MySQL의 기본 키 이름은 항상 PRIMARY입니다. 해당 열과 테이블이 위치한 열 조합에 해당 고유 인덱스를 만듭니다.
작업은 다음과 같습니다:
으아악외래 키 제약 조건 하나 또는 두 테이블 간의 참조 무결성 보장 외래 키는 한 테이블의 두 필드 또는 두 테이블의 두 필드 간의 참조 관계 를 기반으로 합니다. 즉, 슬레이브 테이블의 외래 키 값이 마스터 테이블에서 발견되거나 비어 있어야 하며, 마스터 테이블의 레코드가 슬레이브 테이블에서 참조되는 경우에는 마스터 테이블의 레코드가 삭제되지 않습니다. 데이터를 삭제하려면 먼저 슬레이브 테이블을 삭제해야 합니다. 테이블의 데이터는 레코드에 따라 달라지며, 그런 다음 기본 테이블의 데이터를 삭제할 수 있습니다. 테이블.
참고: 외래 키 제약 조건의 참조 열은 기본 테이블의 기본 키 또는 고유 키 제약 조건의 열만 참조할 수 있습니다. 참조된 기본 테이블 열이 유일한 레코드가 아니라고 가정하면 테이블에서 참조되는 데이터는 다음과 같습니다. 레코드 위치를 확신할 수 없습니다. 동일한 테이블에 여러 개의 외래 키 제약 조건이 있을 수 있습니다.
이제 사용자의 그룹 정보를 기록하는 GROUP 테이블을 생성해 보겠습니다.
그럼~ 사용자 테이블에 레코드를 추가하여 사용자가 어떤 그룹에 속해 있는지 기록하세요
으아악//외래 키 추가
으아악//외래 키 제약 조건 확인
으아악//비워둘 수는 있지만 참조 테이블에 없는 값은 될 수 없습니다
으아악외래 키 정의:
으아악다음 계단식 작업에는 주의가 필요합니다.
ON DELETE CASCADE: 상위(참조) 테이블에서 행을 삭제할 때 삭제된 상위 행에 종속되는 하위 테이블에 하위 행이 있는 경우 하위 행도 함께 삭제되는 것은 권장되지 않습니다.
ON DELETE SET NULL: 상위(참조) 테이블의 행을 삭제할 때 삭제된 상위 행에 의존하는 하위 테이블의 하위 행이 있으면 삭제되지 않고 하위 테이블의 외래 키 열이 삭제됩니다. 행은 NULL로 설정됩니다
일반적인 CHECK 제약 조건은 다음과 같습니다.
으아악예: 사용자 이름 길이가 0보다 큰지 확인하세요
으아악이건 매우 쓸모없어 보이는데, 데이터 판단은 대개 비즈니스 계층에서 이루어지고, 데이터베이스는 데이터만 저장하면 되는 것 같습니다.
위 내용은 Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!