SW Academy

[CNU SW Academy] 12일차(22.12.16)

narlo 2022. 12. 18. 20:45

활동 내용을 블로그에 기록하지 못해 이제서야 올린다.

과제와 수업 때문에 비대면으로 진행하였다.


팀프로젝트 프로토타입 제작

제작한 프로토타입의 일부분이다. 자세한 프로토타입 결과는 보고서에 링크가 첨부되어있다.

 


김종익교수님 DB

Key에는 superkey, candidate key, primary key, foreign key가 존재한다.

DB 연산에 대해 알아보았다.

select, project, union, set difference, cartesian product, rename 연산 등이 있다.

selection은 조건에 해당하는 튜플을 찾는 연산이다.

같다. 다르다. 크다. 크거나 같다. 작다. 작거나 같다 등의 연산과

and, or, not의 연산도 가능하다.

 

projection은 나열된 열만 선택하여 새로운 관계를 얻어내는 연산이다.

여러 열 중 필요한 열만 선택해 편리하게 보고자 할 때 사용할 수 있다.


SQL

개인적으로 DB에 대한 공부를 하면 좋을 것 같다.

사용자가, 응용프로그램이 DB에 접근하는 유일한 인터페이스가 SQL이다.

Relational Algebra를 우리가 쓰는 언어로 바꿔놓은 것이 SQL이다.

 

DML, DDL(View를 정의하게 해줌)

Embedded SQL : 언어의 일부로 SQL을 사용할 수 있도록 해 놓은 것

dynamic SQL : DB를 접근할 수 있는 API를 제공

 

Domain types in SQL : sql에서 사용하는 데이터 타입

char(n) : 고정된 크기의 문자열

varchar(n) : 가변적, 최대 n개의 문자

int

smallint : int보다 조금 작은 크기의 int

numeric(p, d) : 최대 p자리, 소숫점 아래 숫자가 d개

real, double precision

float(n)

 

 

command

- create table

primary key

foreign key (Am, ..., An) references r

not null

제약조건을 부여할 수 있다.

primary key는 null값을 가질 수 없음

 

- insert into values

- delete from

- drop table

- alter table add

- alter table drop

- select from where

- select distinct from : 중복을 제거한

- select all from : 중복도 삭제하지 않고 모두 보여줌

 

between A and B

 

union, intersect, except

합집합, 교집합, 차집합

두 relation의 schema가 같아야 연산이 가능하다.

 

union all, intersect all, except all

중복을 제거하지 않는 방법

 

aggregate functions

avg, min, max, sum, count

 

group by ~ having ~


코딩테스트 - 배열 다루기

arrs = []
while(True):
    try:
        a = input().lstrip()
        if a != "":
            arr = list(a.split(" "))
            arrs.append(arr)
    except EOFError:
        break
        
if len(arrs) == 1:
    print(' '.join(arrs[0]))
else:
    minlen = min(len(arrs[0]), len(arrs[1]))
    result = ''
    for i in range(minlen):
        result += arrs[0][i] + " "
        result += arrs[1][i] + " "
    if len(arrs[0]) != minlen:
        for i in range(minlen, len(arrs[0])):
            result += arrs[0][i] + " "
    else:
        for i in range(minlen, len(arrs[1])):
            result += arrs[1][i] + " "
    print(result)

파이썬으로 해결하였는데, arr2가 안들어오는 경우 자동으로 eof로 처리해버리는 문제가 발생해서 어려움을 겪었다.

try, except를 이용하여 eof일 경우 while문을 빠져나오도록 구성해주었다.

arr1 또는 arr2에 white space 즉, 공백이 하나 포함되어 있는 경우 이를 문자열으로 처리해버리는 문제가 발생했다.

lstrip() 함수를 이용하여 공백을 제거해 해결했다.

'SW Academy' 카테고리의 다른 글

[CNU SW Academy] 14일차(22.12.20)  (0) 2022.12.23
[CNU SW Academy] 13일차(22.12.19)  (0) 2022.12.22
[CNU SW Academy] 11일차(22.12.15)  (1) 2022.12.15
[CNU SW Academy] 9일차(22.12.13.)  (0) 2022.12.13
[CNU SW Academy] 8일차(22.12.12.)  (0) 2022.12.12