Socrative 풀이 - SQL

Verba volant, scripta manent·2021년 2월 26일
0

1 . 다음은 3-TierArchitecture에 대한 흐름을 정리한 글입니다.
빈칸에 알맞은 단어를 채워넣은 것을 고르세요.

A. 서버, 데이터베이스, 클라이언트
B. 데이터베이스, 서버, 클라이언트
C. 클라이언트, 데이터베이스, 서버
D. 클라이언트, 서버, 데이터베이스

풀이)
A. 서버, 데이터베이스, 클라이언트
-> X, 풀이는 아래에서 한꺼번에 하겠다.
B. 데이터베이스, 서버, 클라이언트
-> X
C. 클라이언트, 데이터베이스, 서버
-> X
D. 클라이언트, 서버, 데이터베이스
-> O

그냥 이렇게 이해하자!
클라이언트가 서버에 자료를 요청한다 -> 요청을 받은 서버는 데이터베이스에서 요청한 자료를 query형식으로 요청한다 -> 요청을 받은 데이터베이스는 결과를 서버에 전송한다 -> 서버는 요청한 자료를 클라이언트에게 응답한다.

따라서 답은 D이다.

2 . 관계형 데이터베이스에 대한 설명으로 옳지 않은 것을 고르세요.

A. 행과 열의 형태로 데이터가 저장된다.
B. SQL는 데이터를 가져올때만 사용된다.
C. 대표적인 관계형 데이터베이스로 MySQL, SQLite, Postgres, MariaDB가 있다.
D. SQL을 사용하려면 형식이 고정된 스키마가 필요하다.

풀이)
A. 행과 열의 형태로 데이터가 저장된다.
-> O, 데이터베이스는 테이블로 구성되어 있고, 테이블 안에는 행(열의 속성에 맞게 데이터가 저장됨)과 열(데이터의 속성 혹은 이름)로 구성되어있다.
B. SQL는 데이터를 가져올때만 사용된다.
-> X, create, read, update, delete 모두 가능하다.
C. 대표적인 관계형 데이터베이스로 MySQL, SQLite, Postgres, MariaDB가 있다.
-> O, 이러한 종류가 있다는 것만 알아두자.
D. SQL을 사용하려면 형식이 고정된 스키마가 필요하다.
-> O, 데이터의 형식을 미리 잘 설정해야 원하는 데이터에 대한 작업이 가능하다.

3 . SQL의 Primary Key와 Foreign Key에 대한 설명으로 옳지 않은 것을 고르세요.

A. PRIMARY KEY는 관계형 데이터베이스 테이블의 각 레코드를 고유하게 식별하는 속성입니다.
B. PRIMARY KEY는 테이블내에 하나의 컬럼에만 부여 할 수 있습니다.
C. FOREIGN KEY는 다른 테이블을 참조하는 목적으로 사용됩니다.
D. REFERENCES 라고 하는 SQL을 사용해서 FOREIGN KEY로 다른 테이블과 관계를 형성합니다.

풀이)
A. PRIMARY KEY는 관계형 데이터베이스 테이블의 각 레코드를 고유하게 식별하는 속성입니다.
-> X, PRIMARY KEY의 정의이다.
B. PRIMARY KEY는 테이블내에 하나의 컬럼에만 부여 할 수 있습니다.
-> O, 테이블 내에 multiple한 컬럼에 부여할 수는 있으나 각각 unique한 값을 가져야 한다.
C. FOREIGN KEY는 다른 테이블을 참조하는 목적으로 사용됩니다.
-> X, 맞는 뜻이다.
D. REFERENCES 라고 하는 SQL을 사용해서 FOREIGN KEY로 다른 테이블과 관계를 형성합니다.
-> X, 다른 테이블을 참조하고 싶을때 REFERENCES를 이용한다.

따라서 답은 B이다.

4 . 쇼핑몰 데이터베이스에서 유저,주문,상품에 대한 테이블이 각각 있습니다.
유저 테이블과 주문 테이블의 관계, 주문 테이블과 상품 테이블의 관계를 각각 골라주세요.

A. 1:N, N:M
B. N:1, N:M
C. N:M, 1:N
D. N:1, 1:N

풀이)
A. 1:N, N:M
-> O, 풀이는 아래에서 한꺼번에 하겠다.
B. N:1, N:M
-> X
C. N:M, 1:N
-> X
D. N:1, 1:N
-> X

그냥 실생활로 이해하자!
한명의 유저는 주문을 여러번 할 수 있다.(1:N)
주문은 여러개의 상품을 주문할 수 있다.(N:M)

따라서 답은 A이다.

5 . 다음 스키마 구성에서 김코딩의 모든 주문내역중 주문 아이디와 주문액의 합계를 가져오는 쿼리문을 고르세요.

A. select orders.id, orders.totalPrice from order_items inner join orders on order_items.id = orders.user_id where users.username = "김코딩";
B. select orders.id, orders.totalPrice from order_items inner join orders on users.id = orders.user_id where users.username = "김코딩";
C. select orders.id, orders.totalPrice from orders inner join users on users.id = orders.user_id where users.username = "김코딩";

풀이)
주문 아이디(orders.id), 주문액 합계(orders.totalPrice)를 orders 테이블과 users 테이블의 교집합인 id(그러니깐 users 테이블에서는 username이 되고 orders 테이블에서는 user_id가 된다.
그 중 username이 '김코딩'을 찾으라고 했으니 where 구문을 사용하여 users 테이블에서 username이 김코딩인 것으로 설정하여 찾는다.

따라서 답은 C이다.

6 . 다음 NoSQL의 특징 중 올바르지 않은 것을 고르세요.

A. NoSQL은 수직적으로 확장되기 때문에 많은 트래픽을 위해 사용합니다.
B. NoSQL은 형식이 정해지지 않아 유연하게 데이터를 저장할 수 있습니다.
C. 데이터 구조를 자주 업데이트 해야하는 경우 NoSQL 기반의 비관계형 데이터베이스가 적합합니다.
D. 데이터베이스의 ACID 성질을 철저하게 지켜야 하는 경우에는 적합하지 않을 수 있습니다.

풀이)
A. NoSQL은 수직적으로 확장되기 때문에 많은 트래픽을 위해 사용합니다.
-> O, SQL 기반의 관계형 데이터베이스가 수직적으로 확장된다.
B. NoSQL은 형식이 정해지지 않아 유연하게 데이터를 저장할 수 있습니다.
-> X, 나머지는 NoSQL의 특징이므로 생략하도록 하겠다.
C. 데이터 구조를 자주 업데이트 해야하는 경우 NoSQL 기반의 비관계형 데이터베이스가 적합합니다.
-> X,
D. 데이터베이스의 ACID 성질을 철저하게 지켜야 하는 경우에는 적합하지 않을 수 있습니다.
-> X,

따라서 답은 A이다.

7 . 다음의 개발되고 있는 서비스에서 관계형 데이터베이스가 접목되기 좋은 서비스는 어떤 것이 있을 지 모두 고르세요.

A. 항상 일관된 데이터가 필요한 앱 (e.g. 주식거래)
B. 많은 수의 읽기, 쓰기 작업이 동시에 처리되고 시스템의 확장성이 빠른 앱(e.g.소셜미디어)
C. 기능별로 복잡한 관계가 많이 설정되는 앱 (e.g. 쇼핑몰)

풀이)
A. 항상 일관된 데이터가 필요한 앱 (e.g. 주식거래)
-> O,
B. 많은 수의 읽기, 쓰기 작업이 동시에 처리되고 시스템의 확장성이 빠른 앱(e.g.소셜미디어)
-> X, 비관계형 데이터베이스가 접목되기 좋은 서비스
C. 기능별로 복잡한 관계가 많이 설정되는 앱 (e.g. 쇼핑몰)
-> O,

따라서 답은 A,C이다.

profile
말은 사라지지만 기록은 남는다

0개의 댓글