-
[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)는 데이터베이스에서 데이터가 구성되는 방식으로 엔티티(데이터베이스에서 테이블) 간의 관계를 보여줍니다.
지금까지 관계형 데이터베이스를 설계하는 방법에 대해서 알아보았습니다.
'SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 SQL 고득점 Kit -GROUP BY (0) 2021.07.07 [MySQL] 프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN (0) 2021.07.06 [MySQL] 프로그래머스 SQL 고득점 Kit - SELECT (0) 2021.07.05 [SQL] SQL Query 쿼리문 (2) - DISTINCT, JOIN, OUTER JOIN (0) 2021.05.31 [SQL] SQL Query 쿼리문 (1) - SELECT, FROM, WHERE, ORDER BY, GROUP BY, LIMIT (0) 2021.04.04 - 테이블 이름 : Customer