ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] 데이터베이스 설계
    SQL 2021. 4. 4. 20:54

     

     

     

     

     

    SQL(Structured Query Language) 는 데이터베이스용 프로그래밍 언어로, 주로 관계형 데이터베이스에서 사용됩니다. 

    여기서 관계형 데이터베이스(relation database)란 테이블을 사용하는 데이터베이스라고 할 수 있습니다. 

     

     

     

     

     

    데이터베이스에서 행과 열로 구성된 체계화된 데이터를 의미하는 테이블( relation)은 1:1, 1:N, N:N 관계를 가질 수 있습니다.

    뿐만 아니라 테이블 내에서 관계를 가지는 자기참조 관계인, self-referencing 관계도 있습니다. 

    데이터베이스에서 가장 많이 쓰이고 가장 흔하게 발견할 수 있는 관계는 일대다(1:N) 관계입니다. 

     

     

     

     

     

    테이블에서 열은 필드(field) 혹은 Column이라고 하며, 한 행에 저장된 정보는 레코드(record) 혹은 튜플(tuple) 이라고 합니다.

    테이블에서 키는 테이블에서 각 레코드를 구분할 수 있는 고유의 값인 Primary key와

    다른 테이블의 primary key를 참조하는 값인 Foreign key가 있습니다. 

     

     

     

     

     

     

     

     

    먼저 테이블을 만드는 방법입니다. 

     

    CREATE TABLE tablename (
        column_name data_type
    )

     

    tablename 에 테이블의 이름을 입력해주고,

    column_name 에 테이블에서 해당 칼럼의 이름을, data_type 에는 해당 칼럼의 데이터 타입을 입력해주시면 됩니다. 

     

     

     

     

     

    다음과 같은 조건을 가진 테이블을 만들어 보겠습니다. 

     

    • 테이블 이름 : Customer
      • customer_id : integer, not null, PK
      • customer_name : varchar(64), not null
      • customer_age : integer
    CREATE TABLE Customer (
        customer_id INTEGER NOT NULL PRIMARY KEY, 
        customer_name VARCHAR(64) NOT NULL, 
        customer_age INTEGER
    )

     

     

     

     

     

    관계를 설정을 위하여 테이블을 하나 더 만들어 보겠습니다. 

     

    • 테이블 이름 : Invoice
      • invoice_id : integer, not null, PK
      • invoice_date : date
      • billing_city : varchar(32)
    CREATE TABLE Invoice (
        invoice_id INTEGER NOT NULL PRIMARY KEY, 
        invoice_date DATE,
        billing_city VARCHAR(32)
    )

     

     

     

     

     

    위에서 만들어진 두 테이블 이어주는 역할을 하는 Customer_Invoice 테이블을 만들어 보겠습니다. 

    다대다 관계인 테이블을 이어주기 위해 양 테이블과 일대다 관계를 가지고 있는 테이블을 만들어줄 수 있는데

    이러한 테이블을 조인 테이블이라고 합니다. 

     

     

     

    조인 테이블에서 Foriegn key를 지정해 줌으로써 데이터베이스에서 테이블 간 관계를 설정해줄 수 있습니다. 

     

    CREATE TABLE Customer_Invoice (
        ci_id INTEGER NOT NULL PRIMARY KEY, 
        customer_id INTEGER, 
        invoice_id INTEGER,
        FOREIGN KEY (customer_id) REFERENCES Customer (customer_id),
        FOREIGN KEY (invoice_id) REFERENCES Invoice (invoice_id)
    )

     

     

     

     

     

    위에서 설계한 데이터베이스의 관계는 이와 같은 스키마로 표현할 수 있습니다. 

    스키마(Schema)는 데이터베이스에서 데이터가 구성되는 방식으로 엔티티(데이터베이스에서 테이블) 간의 관계를 보여줍니다. 

     

     

     

     

     

    지금까지 관계형 데이터베이스를 설계하는 방법에 대해서 알아보았습니다. 

     

     

     

     

Designed by Tistory.