데이터베이스 - 데이터베이스 무결성

데이터베이스 무결성


데이터의 정확성과 상용성
데이터의 무결성과 보안이란 서로 다른 개념의 데이터의 무결성을 방지하기 위해 데이터베이스에 의미에 부합되지 않는 데이터가 존재하는 것을 방지한다. 즉, 데이터베이스에 부정확한 데이터 방지 대상이 존재하는 것을 방지한다. 의미에 맞지 않고 부정확한 데이터 데이터의 안전성은 데이터베이스를 보호하고 악의적인 파괴와 불법 액세스 방지 대상을 방지한다. 불법 사용자와 불법 조작은 데이터베이스의 무결성을 유지하기 위해DBMS는 다음과 같아야 합니다. 1.완결성 제약조건을 정의하는 메커니즘 2.무결성 검사를 위한 방법 3.위약 처리

솔리드 무결성


솔리드 무결성 정의 관계 모델의 솔리드 무결성 CREATE TABLE에서 PRIMARY KEY로 단일 속성 구성을 정의하는 코드는 열 제약조건으로 정의되고 테이블 제약조건으로 정의되며 여러 속성에 대한 코드는 테이블 제약조건으로 정의됩니다.
[ 1]   Student Sno 

         (1) 

              CREATE TABLE Student
                (Sno  CHAR(9)  PRIMARY KEY,
                 Sname  CHAR(20) NOT NULL,     
                 Ssex  CHAR(2) ,
                 Sage  SMALLINT,
                 Sdept  CHAR(20));
(2) 
    CREATE TABLE Student
        (Sno  CHAR(9),  
         Sname  CHAR(20) NOT NULL,
         Ssex  CHAR(2) ,
         Sage  SMALLINT,
         Sdept  CHAR(20),
         PRIMARY KEY (Sno)
      ); 
[ 2] SC Sno,Cno 
      CREATE TABLE SC
           (Sno   CHAR(9)  NOT NULL, 
            Cno  CHAR(4)  NOT NULL,  
            Grade    SMALLINTPRIMARY KEY (Sno,Cno)     /* */
          ); 

실체 완전성 검사와 위약 처리를 삽입하거나 메인 코드 열을 업데이트할 때 RDBMS는 실체 완전성 규칙에 따라 자동으로 검사한다.포함: 1.주 부호 값이 유일하는지 확인하고 유일하지 않으면 삽입이나 수정을 거부합니다.주 코드의 각 속성이 비어 있는지 확인하십시오. 하나만 비어 있으면 삽입이나 수정을 거부합니다

참조 무결성


참조 무결성 정의 관계 모델의 참조 무결성 정의CREATE TABLE에서 FOREIGN KEY 구문을 사용하여 외부 코드로 정의할 때 외부 코드가 참조되는 테이블의 마스터 코드를 나타내는 REFERENCES 구문을 사용합니다.
 , SC ,(Sno,Cno) 。Sno,Cno Student Course  
[ 3]   SC 
      CREATE TABLE SC
         (Sno    CHAR(9)  NOT NULL, 
          Cno     CHAR(4)  NOT NULL,  
          Grade    SMALLINTPRIMARY KEY (Sno, Cno),   /* */
          FOREIGN KEY (Sno) REFERENCES Student(Sno),  
            /* */
          FOREIGN KEY (Cno) REFERENCES Course(Cno)    
          /* */
      );

완전성 검사와 위약 처리 참조 완전성 위약 처리
  • 거부(NO ACTION) 기본 정책 실행
  • 캐스케이드(CASCADE) 작업
  • 빈 값으로 설정(SET-NULL)은 참조 완전성에 대해 외부 코드를 정의해야 할 뿐만 아니라 외부 코드 열이 빈 값을 허용할 수 있는지도 정의해야 한다
  • [ 4]   
        CREATE TABLE SC
            (Sno   CHAR(9)  NOT NULL,
             Cno   CHAR(4)  NOT NULL,
             Grade  SMALLINTPRIMARY KEY(Sno,Cno),              
             FOREIGN KEY (Sno) REFERENCES Student(Sno) 
            ON DELETE CASCADE     /* SC */
                    ON UPDATE CASCADE, /* SC */
             FOREIGN KEY (Cno) REFERENCES Course(Cno)                       
                   ON DELETE NO ACTION  
                   /* course  SC */
                   ON UPDATE CASCADE   
            /* course cno , SC */
            );
    

    사용자 정의의 완전성은 특정한 응용 데이터에 대해 반드시 만족해야 하는 의미에 따라 RDBMS가 제공되고 응용 프로그램이 부담하지 않아도 된다는 것이다

    속성상의 제약조건 정의

    CREATE TABLENOT NULL)
     (UNIQUE)
     (CHECK
    1.  
    
    [ 5]   SC , Sno、Cno、Grade 。
        CREATE TABLE SC
          (Sno  CHAR(9)  NOT NULL,  
              Cno  CHAR(4)  NOT NULL,   
              Grade  SMALLINT NOT NULLPRIMARY KEY (Sno, Cno),  
              /*  , Sno,Cno ,  * /
            ); 
    
    2.  
    
    [ 6]   DEPT, Dname , Deptno 
        CREATE TABLE DEPT
            (Deptno  NUMERIC(2),
              Dname  CHAR(9)  UNIQUE,/* Dname */
              Location  CHAR(10),
              PRIMARY KEY (Deptno)
           );
    
    3.  CHECK 
    
    [ 7]  Student Ssex “ ” “ ”。
        CREATE TABLE Student
            (Sno  CHAR(9) PRIMARY KEY,
              Sname CHAR(8) NOT NULL,                     
              Ssex  CHAR(2)  CHECK (Ssex IN (‘ ’,‘ ’) ) ,                
                  /* Ssex ' ' ' ' */
              Sage  SMALLINT,
              Sdept  CHAR(20)
            );
    

    속성상의 구속조건 검사와 위약 처리


    원조를 삽입하거나 속성의 값을 수정할 때 RDBMS는 속성의 제약조건이 충족되었는지 확인하고 충족되지 않으면 작업이 실행되지 않음

    원조상의 제약 조건의 정의


    CREATE TABLE에서 CHECK 구문을 사용하여 원조의 제약 조건을 정의할 수 있습니다. 즉, 원조급의 제한은 속성 값의 제한과 비교하면 원조급의 제한은 서로 다른 속성 간의 수치의 상호 제약 조건을 설정할 수 있습니다.
    [ 9]   , Ms. 。
        CREATE TABLE Student
             (Sno    CHAR(9), 
              Sname  CHAR(8) NOT NULL,
              Ssex    CHAR(2),
              Sage   SMALLINT,
              Sdept  CHAR(20),
              PRIMARY KEY (Sno),
              CHECK (Ssex=' ' OR Sname NOT LIKE 'Ms.%')
              /* Sname  Ssex */
            );
     , Ssex=‘ ’ ;
     , Ms. 
    
    CONSTRAINT  
    
    CONSTRAINT 
    [PRIMARY KEY 
       |FOREIGN KEY 
       |CHECK ]
    
    [ 10]   Student, 90000~99999 , , 30, “ ” “ ”。
        CREATE TABLE Student
          (Sno  NUMERIC(6)
            CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
            Sname  CHAR(20)  
            CONSTRAINT C2 NOT NULL,
            Sage  NUMERIC(3)
            CONSTRAINT C3 CHECK (Sage < 30),
            Ssex  CHAR(2)
            CONSTRAINT C4 CHECK (Ssex IN ( ' '' ')),
            CONSTRAINT StudentKey PRIMARY KEY(Sno)
          );
     Student 5 , ( StudentKey) C1、C2、C3、C4 。
    
    [ 13]   Student , 900000~999999 , 30 40
     , 
          ALTER TABLE Student
            DROP CONSTRAINT C1;
            ALTER TABLE Student
            ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999),
            ALTER TABLE Student
            DROP CONSTRAINT C3;
            ALTER TABLE Student
            ADD CONSTRAINT C3 CHECK (Sage < 40);
    

    좋은 웹페이지 즐겨찾기