>  기사  >  시스템 튜토리얼  >  Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

王林
王林원래의
2024-07-20 03:00:00351검색
세 가지 주요 데이터베이스 패러다임

Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

Normal Form(NF): 관계형 데이터베이스를 설계할 때 다양한 규범적 요구 사항을 따라 합리적인 관계형 데이터베이스를 설계합니다. 이러한 서로 다른 규범적 요구 사항은 서로 다른 패러다임으로 제시됩니다. 패러다임 데이터베이스 중복성이 높을수록. 얻을수록 나는 작아진다. 그러나 중복성을 줄이기 위해 맹목적으로 패러다임을 추구하는 것은 실제로 데이터 읽기 및 쓰기의 효율성을 감소시키는 경우가 있습니다. 이때 패러다임을 뒤집어 공간을 활용하여 시간을 교환해야 합니다. 데이터 테이블의 테이블 구조가 준수하는 특정 설계 표준 수준으로 대략적으로 이해될 수 있습니다.

1NF 즉, 테이블의 컬럼은 원자성이므로 분해할 수 없습니다. 즉, 데이터베이스가 관계형 데이터베이스(mysql/oracle/db2/informix/sysbase/sql 서버)인 한 컬럼 정보를 분해할 수 없습니다. 자동으로 1NF를 충족합니다. 데이터베이스 테이블의 각 열은 분할할 수 없는 원자 데이터 항목이며 컬렉션, 배열, 레코드 및 기타 비원자 데이터 항목이 될 수 없습니다. 엔터티의 속성에 여러 값이 있는 경우 여러 속성으로 분할해야 합니다. 일반적인 이해는 필드가 하나의 정보만 저장한다는 것입니다.

위의 내용은 첫 번째 패러다임에 부합하지 않습니다. 왜냐하면 구매와 판매는 구매수량, 구매단위, 판매단위, 판매수량 등으로 더 세분화될 수 있기 때문입니다. 다음은 첫 번째 패러다임을 충족합니다. Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

2NF 두 번째 정규형(2NF)은 첫 번째 정규형(1NF)을 기반으로 성립됩니다. 즉, 두 번째 정규형(2NF)을 만족하려면 첫 번째 정규형(1NF)을 먼저 만족해야 합니다. 1NF를 충족한 후에는 테이블의 모든 열이 기본 키에 종속되어야 하며 기본 키와 관계가 없는 열이 있을 수 없습니다. 즉, 테이블은 한 가지만 설명합니다.
예: 주문 테이블은 주문 관련 정보만 설명하므로 모든 필드는 주문 ID와 관련되어야 합니다. 제품 테이블은 제품 관련 정보만 설명하므로 모든 필드는 제품 ID와 관련되어야 합니다. 아래와 같이 한 테이블에 동시에 제품 정보를 표시할 수 없습니다.

Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임3NF

먼저 두 번째 정규형(2NF)을 충족해야 합니다. 테이블의 각 열은 기본 키에만 직접 관련되고 간접적으로 관련되지 않습니다. 테이블의 각 열은 기본 키에만 종속될 수 있습니다. 예: 주문 테이블에는 고객 관련 정보가 있어야 합니다. 고객 테이블이 분리된 후 주문 테이블에는 사용자 ID 하나만 있으면 되고 다른 고객 정보는 없어야 합니다. 다른 고객 정보는 주문 ID와 직접적인 관련이 있는 것이 아니라 사용자 ID와 직접 관련되어 있기 때문입니다.

다양한 제약Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임

제약조건은 테이블 내 데이터의 정확성, 완전성, 일관성 및 연결을 제한하는 데 사용되는 규칙 집합입니다. Mysql에서는 information_schema 데이터베이스의 table_constraints에 제약사항이 저장되며, 이 테이블을 통해 제약사항 정보를 조회할 수 있다. 아래와 같이:

Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임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

unique는 고유 제약 조건을 나타냅니다. 고유 제약 조건은 데이터의 고유성을 보장하기 위해 지정된 테이블의 열 또는 열 조합을 반복할 수 없음을 의미합니다. 비록 고유 제약 조건이 중복 값을 허용하지 않지만 여러 null이 될 수 있으며. 동일한 테이블에는 여러 개의 열을 결합하는 제약인 고유 제약 조건이 여러 개 있을 수 있습니다. UNIQUE 제약 조건을 생성할 때 UNIQUE 제약 조건 이름을 지정하지 않으면 기본적으로 열 이름과 동일하게 지정되며 MySQL은 기본적으로 UNIQUE 제약 조건의 열에 고유 인덱스를 생성합니다.

고유 제약 조건 추가:

으아악
기본 키

기본 키 제약 조건은 고유 제약 조건 + null이 아닌 제약 조건의 조합과 동일합니다. 기본 키 제약 조건 열은 중복이나 null 값을 허용하지 않습니다. 여러 열을 결합하는 기본 키 제약 조건인 경우 해당 열 중 어떤 열도 null 값을 가질 수 없으며, 결합된 값이 반복되는 것도 허용되지 않습니다. 각 테이블은 최대 하나의 기본 키 만 허용합니다. 기본 키 제약 조건은 열 수준이나 테이블 수준에서 생성될 수 있습니다. MySQL의 기본 키 이름은 항상 PRIMARY입니다. 해당 열과 테이블이 위치한 열 조합에 해당 고유 인덱스를 만듭니다.

작업은 다음과 같습니다:

으아악
외국 키

외래 키 제약 조건 하나 또는 두 테이블 간의 참조 무결성 보장 외래 키는 한 테이블의 두 필드 또는 두 테이블의 두 필드 간의 참조 관계 를 기반으로 합니다. 즉, 슬레이브 테이블의 외래 키 값이 마스터 테이블에서 발견되거나 비어 있어야 하며, 마스터 테이블의 레코드가 슬레이브 테이블에서 참조되는 경우에는 마스터 테이블의 레코드가 삭제되지 않습니다. 데이터를 삭제하려면 먼저 슬레이브 테이블을 삭제해야 합니다. 테이블의 데이터는 레코드에 따라 달라지며, 그런 다음 기본 테이블의 데이터를 삭제할 수 있습니다. 테이블. 참고: 외래 키 제약 조건의 참조 열은 기본 테이블의 기본 키 또는 고유 키 제약 조건의 열만 참조할 수 있습니다. 참조된 기본 테이블 열이 유일한 레코드가 아니라고 가정하면 테이블에서 참조되는 데이터는 다음과 같습니다. 레코드 위치를 확신할 수 없습니다. 동일한 테이블에 여러 개의 외래 키 제약 조건이 있을 수 있습니다.
이제 사용자의 그룹 정보를 기록하는 GROUP 테이블을 생성해 보겠습니다.

으아악

그럼~ 사용자 테이블에 레코드를 추가하여 사용자가 어떤 그룹에 속해 있는지 기록하세요

으아악

//외래 키 추가

으아악

//외래 키 제약 조건 확인

으아악

//비워둘 수는 있지만 참조 테이블에 없는 값은 될 수 없습니다

으아악

외래 키 정의:

으아악

다음 계단식 작업에는 주의가 필요합니다.

ON DELETE CASCADE: 상위(참조) 테이블에서 행을 삭제할 때 삭제된 상위 행에 종속되는 하위 테이블에 하위 행이 있는 경우 하위 행도 함께 삭제되는 것은 권장되지 않습니다.

ON DELETE SET NULL: 상위(참조) 테이블의 행을 삭제할 때 삭제된 상위 행에 의존하는 하위 테이블의 하위 행이 있으면 삭제되지 않고 하위 테이블의 외래 키 열이 삭제됩니다. 행은 NULL로 설정됩니다

CHECK CHECK 제약 조건은 테이블에 행을 삽입하거나 데이터 행을 업데이트할 때 CHECK 제약 조건 검사를 수행하는 것입니다. CHECK는 표현식을 허용하며, 표현식이 FALSE이면 삽입이 허용됩니다. MariaDB10.2 버전에서는 CHECK만 지원하기 시작했습니다.

일반적인 CHECK 제약 조건은 다음과 같습니다.

으아악

예: 사용자 이름 길이가 0보다 큰지 확인하세요

으아악

이건 매우 쓸모없어 보이는데, 데이터 판단은 대개 비즈니스 계층에서 이루어지고, 데이터베이스는 데이터만 저장하면 되는 것 같습니다.

위 내용은 Mariadb 학습 요약(5): 데이터베이스 테이블 제약 조건 및 세 가지 패러다임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.