1. 스키마 정의


- 간단하게 데이터베이스구조와 구조 안에 포함된 여러 제약조건을 스키마라고 한다.

- DB에는 여러 객체가 존재하는데, 객체 마다 가져야할 특성이 있으므로 객체의 특성에 맞는 속성과 그의 제약조건이 기술된 것이다.

- 제약조건은 예를 들면 전화번호 속성에 정수인 숫자만 입력하도록 조건을 걸어 문자 입력할 경우 오류를 발생시킨다.

- 관점에 따라 외부, 개념, 내부 스키마로 나누어진다.



2. 스키마 특징


- 스키마는 데이터 사전에 저장되는데, 다른 이름으로는 메타데이터라고 한다. 

- 데이터 사전데이터를 설명하는 데이터라고 하는데, 스키마도 일종의 데이터베이스의 구조를 명세하는 데이터라고 보면 되겠다.

- 시간이 지나도 변하지 않는다. 제약조건의 경우 수정이 없으면 계속 유지되어야하는 것이다.

- 스키마는 데이터의 구조적 특성이고, 인스턴스에 의해 규정된다.

- 인스턴스는 객체의 속성에 부합하는 데이터 값을 가지는 것이다. 

- 학생부 객체에서 한 명의 학생에 대한 데이터(이름, 학번, 주소 등)를 인스턴스라고 한다.



3. 스키마의 3계층


외부 스키마 = 서브 스키마 = 사용자 뷰 

- 전체 데이터베이스에서 자신이 필요한 데이터를 가져다 쓸 수 있도록 별도의 스키마를 만든 것이다. 그래서 서브 스키마이다.

- 필요에 따라 스키마를 만들 수 있으므로 외부 스키마는 데이터베이스에서 다수 존재한다.

- 일반 사용자는 쿼리 언어(Query Language)를 이용해서 데이터베이스에 접근한다.


개념 스키마 = 전체 뷰

- 개념 스키마가 그냥 스키마다. 전체 데이터베이스이므로 단 하나이다.

- 여러 객체 간의 관계, 제약 조건, 권한, 보안 등을 정의

- 데이터베이스 관리자(DBA)가 만든다.


내부 스키마 = 저장 스키마

- 실질적으로 저장장치에 저장될 데이터의 구조를 정의한다. 

- 인스턴스의 데이터 크기가 얼마인지 등의 물리적인 구조를 나타낸다.  

'컴퓨터과학 > 데이터베이스' 카테고리의 다른 글

데이터베이스 개념  (0) 2018.10.03
정보 시스템  (0) 2018.10.02
블로그 이미지

쵸잇

,

1. 데이터베이스 정의


- 특정 조직체에서 업무 수행에 필요한 데이터를 모아둔 집합체이다.

- 정보 시스템의 개념이 녹아들어있다. 자료를 보관하여 가공처리한 후 필요시 정보로 활용한다.


- 데이터베이스는 4개의 데이터를 정의하고 있다.


통합된 데이터 : 자료의 중복을 줄여 데이터를 최적화 - 회사도 부서별로 데이터 파일을 갖고 있지 않고, 하나로 통합해서 효율을 높인다.

저장된 데이터 : 컴퓨터가 접근 가능한 저장매체에 저장된 데이터

운영 데이터 : 업무에 고유한 업무 수행에 반드시 필요한 데이터 - 헬스장 DB의 회원정보

공용 데이터 : 조직내 여러 사람이 사용 가능한 데이터



2. 데이터베이스 특징


데이터 중복 최소화 : 데이터 제거는 아니고 최소로 중복을 허용함

실시간 접근성 : 실시간 처리 가능 - 온라인 뱅킹, ATM 등

계속적인 변화 : 새로운 데이터의 변화에 대해 항상 업데이트

동시 공용 : 공용 데이터의 정의와 동일

내용에 의한 참조 : DB의 데이터에 접근시 하나의 객체 위치에 접근하는 것이 아니라, 필요한 데이터 내용만 찾아서 쓴다.

(워크맨은 원하는 노래를 찾으려면 테잎을 되감기하여 위치를 찾아야하고, MP3는 원하는 노래를 선택한다)



'컴퓨터과학 > 데이터베이스' 카테고리의 다른 글

스키마(Schema)  (0) 2018.10.03
정보 시스템  (0) 2018.10.02
블로그 이미지

쵸잇

,

1. '우리'를 표현하는 방식이 2가지인데 쓰임은 다르다.


我们 - 어떤 상황에서건 '우리'라고 쓸 수 있다.

咱们(zánmen) - 말하는 사람과 듣는 사람이 모두 포함된 상황인 '우리'이어야 한다.



2. 동물을 지칭할때는 它(Tā)/它们 이다.



3. 지시대명사 정리


지시대명사

단수

복수 

이(것) 

这些(zhèxiē)

그, 저(것)

那些

어느 것(의문)

哪(nǎ)

哪些


※ 개수가 명확한 상황에서는 복수형을 쓰지 않고 지시대명사 + 개수 형태로 써야한다.

这些两个是书。(X) ▶ 两个是书。(O) 이 2개는 책이다. (这些是书。이것들은 책이다.)



4. 个는 一个가 축약된 형태의 단수이므로 복수형으로 쓸 수 없다.


这个三个是钱包。(X) ▶ 这三个是钱包。(O) 이 세 개는 지갑이다.



5. '的'의 쓰임


- 명사/대명사 + 的 형태로 쓰이면 소유의 성향이 강해진다. 


我的包 나의 가방

* 축약된 형태인 '我的(내 것)'로 사용을 많이 한다.



- 술어를 명사에 수식하려면 반드시 '的'를 사용한다.


漂亮的包 이쁜 가방

我开的车 내가 운전하는 자동차



6. '的'의 생략


- 물건을 제외한 '나'의 가족, 지인, 소속 단체를 표현할 때는 '我的'에서 '的'를 반드시 생략한다.


我妈妈 우리 엄마, 我弟弟 우리 동생, 我朋友 내 친구

* 학교와 회사는 개인소유가 아닐 경우 我가 아닌 我们을 사용한다 我们学校 우리 학교, 我们公司 우리 회사

 


- 1음절 형태의 형용사인 경우 술어 임에도 '的'를 생략한다.


好的朋友(X) ▶ 好朋友(O) 좋은 친구

旧的书(X) ▶ 旧书(jiùshū)(O) 오래된 책



- 개수와 명사를 이어줄 때 '的'를 사용할 필요가 없다.


一个的学生(X) ▶ 一个学生(O) 한 명의 학생

一件的衣服(X) ▶ 一件衣服(O) 한 벌의 옷

两本的书(X) ▶ 两本书(O) 두 권의 책



** 고수 넣지 말아주세요! 

不要放香菜(buyào fàng xiāngcài)

'외국어 > 중국어' 카테고리의 다른 글

조동사 可以  (0) 2018.11.20
정도보어(상태보어)와 得  (0) 2018.11.19
기초문법 (4) - 방위사  (0) 2018.10.20
기초문법 (3)  (0) 2018.10.05
기초 문법 (1)  (0) 2018.10.02
블로그 이미지

쵸잇

,

1. 새로운 내장함수를 만들어서 활용해보자.


__init__함도 중요한 기능을 갖췄지만 인스턴스를 처음 만들 때만 호출되므로 이후에는 쓸 일이 없다.


이번 함수는 게시글 조회수를 올려주는 기능을 갖고 있다.


1
2
def read(self):
    self.view_count = self.view_count + 1
cs


read함수는 view_count 변수에 접근해 조회수에 1을 더해준다.


1
article1.read()
cs


인스턴스 article1에 해당하는 글을 조회했다고 가정하고 작성한 코드이다.

인스턴스에 .을 붙이고 read()를 입력하면 read함수가 호출된다. 

출력해보자.


1
print(article1.view_count)
>> 1
cs


숫자 '1'이라고 조회수가 출력된다. 

사실 read함수 없이 조회수를 올리는 방법이 있긴 하다!


1
article1.view_count = article1.view_count + 1
cs


코드량도 늘어나고 번거로운 작업이 될 뿐이다.



2. 클래스 상속하기


개발언어 대부분이 영어권에서 시작된 거라 가끔 사용하는 어휘가 낯설게 느껴진다.

상속은 inheritance라는 영단어를 그대로 해석한 것이다.

우리식으로는 '물려받았다'라고 볼 수 있다. 간단하게 '똑같은 걸 가져다 쓴다'라면 될까싶다.


클래스도 물려받을 수 있다는 건가? 그렇다.


class 클래스명(상속받을 클래스명):


우리도 상속 받아보자.


1
2
class TistoryArticle(Article):
    source = "티스토리"
cs


상속만 받기 아쉬워서 변수를 하나 더 지정했다.

새로만든 TistoryArticle 클래스는 앞서 만든 Article 클래스의 설계도면을 고스란히 갖추고 있으면서, source라는 변수를 추가했다.


Article 클래스를 상속 받은 TistoryArticle 클래스를 활용하여 인스턴스를 만들어보자.


1
2
tistory_article = TistoryArticle("게임""게임은 쉬워요")
print(tistory_article.title)
>> 게임
cs


titlecontent의 값은 Article 클래스에서 했던 것처럼 똑같이 작성하면 된다.

그리고 title을 출력하면 입력한대로 결과가 나온다.



*심화과정으로 override를 배워보자.


1
2
3
4
5
class TistoryArticle(Article):
    source = "티스토리"
 
    def read(self):
        self.view_count = self.view_count + 2
cs


기존 read함수에서 숫자 1을 2로 변경했다. 

함수 호출시 조회수를 출력하면?


1
2
tistory_article.read()
print(tistory_article.view_count)
>> 2
cs


덮어씌운 격인데 영어 override의 뜻인 '우선순위로 두다'를 반영한 것이다.

필요시 상속 받은 클래스에서만 사용할 수 있도록 함수 수정이 가능하다는 것이다.


'코딩 연습 > Python' 카테고리의 다른 글

함수  (0) 2018.10.04
for 문과 while 문  (0) 2018.10.03
클래스(class) (2) - 내장함수 활용하기  (0) 2018.10.02
클래스(class) (1)  (0) 2018.10.01
블로그 이미지

쵸잇

,

다시 앞서 만든 코드를 살펴보자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
title1 = "개발"
author1 = "홍길동"
content1 = "개발은 쉬워요"
view_count1 = 0
 
title2 = "취업"
author2 = "홍길동"
content2 = "취업은 쉬워요"
view_count2 = 0
 
title3 = "운동"
author3 = "홍길동"
content3 = "운동은 쉬워요"
view_count3 = 0
cs


authorview_count 변수가 가지는 값이 "홍길동", "0"으로 동일하다.




1
2
3
4
5
6
7
8
9
10
11
class Article:
    author = "홍길동"
    view_count = 0
 
    def __init__(self, title, content):
        self.title = title
        self.content = content
 
article1 = Article("개발""개발은 쉬워요")
article2 = Article("취업""취업은 쉬워요")
article3 = Article("운동""운동은 쉬워요")
cs


이게 뭔가? 라고 생각되는데 하나씩 차근차근 살펴보자.


Article 클래스에는 미리 언급한 authorview_count 변수와 값을 남겨두었다. 

인스턴스를 만들면 2개의 변수는 항상 동일하게 접근할 수 있을것이다.


def함수를 뜻하는데 정확한 개념은 나중에 별도로 정리할 것이다. 

일반 함수와 다른 점은 이 함수는 클래스 안에서 쓰인다는 것인데, 클래스 내장함수라고도 불린다.


__init__이라는 함수의 init은 initializer를 축약한 것으로 초기 내용을 설정해주는 역할생성자라고 불린다.

즉 인스턴스를 새로 만들면 __init__함수가 우리가 원하는 변수의 값을 처음에 셋팅해준다.

그리고 괄호 안에 매개변수(입력 받은 값을 넘겨주는 역할)를 지정해주는데, 여기서 self는 뭐냐?

self는 Article 클래스 자기자신이다. 영어의 myself의 의미와 유사하다. 

클래스 내장함수를 쓸 때는 이유불문 암묵적인 약속처럼 해당 클래스를 사용한다는 뜻으로 항상 self를 먼저 붙여준다.

나머지 2개의 매개변수는 새로운 인스턴스에서 생성되는 변수의 인자(변수의 값)를 넘겨주는데 도움을 준다. 



1
2
self.title = title
self.content = content
cs

 


2줄의 코드는 인스턴스의 변수를 접근하는 방식과 동일하게 이해하면 된다.

self.titleArticle 클래스의 title 변수에 접근해서, __init__함수의 매개변수 title을 통해 변수의 값을 넘겨받는다.


그럼 변수의 값(인자)을 어디서 받나?



1
2
3
article1 = Article("개발""개발은 쉬워요")
article2 = Article("취업""취업은 쉬워요")
article3 = Article("운동""운동은 쉬워요")
cs


인스턴스 = 클래스(인자1, 인자2, …)


인스턴스를 만들때, 클래스와 더불어 순차적으로 매개변수의 인자를 입력한다.

"개발"은 첫 매개변수 title을 통해 article1 인스턴스의 title 변수인자로 지정된다.

최종적으로 우리가 원하는 형태의 클래스가 만들어진 것이다. 


어렵지만 이해를 위해 다시 살펴보자.


이 메커니즘을 다시 역으로 돌아보면,

인스턴스를 새로 만들때 클래스를 활성화시키면서 동시에 내장함수인 __init__을 호출하여 매개변수를 통해 입력한 인자를 넘겨준다.

그럼 article1 인스턴스Article 클래스의 기본골격인 authorview_count를 유지하면서, 함수를 통해 titlecontent을 추가로 갖게 된다.


'코딩 연습 > Python' 카테고리의 다른 글

함수  (0) 2018.10.04
for 문과 while 문  (0) 2018.10.03
클래스(class) (3) - 내장함수 활용 및 클래스 상속  (0) 2018.10.03
클래스(class) (1)  (0) 2018.10.01
블로그 이미지

쵸잇

,

1. 来의 목적어로는 '장소'를 포함하는 단어가 온다. 해석도 '~에'를 붙여서 한다.  


学校 그녀는 학교 온다.

她不便利店 그녀는 편의점 오지않는다. (편의점 : bian li dian)



2. 漂亮의 쓰임새


- 우리가 흔히 아는 이쁘다, 아름답다 말고도 멋지다, 훌륭하다, 좋다 등의 뜻도 포함하는 단어이다.


你家很漂亮。너네집 정말 멋지다.



3. 형용사를 사용시 항상 很을 앞에 붙여쓴다.


- '매우'의 뜻을 가진 부사로 중국인의 체면관이 드러나는 단어라고 한다.

- 很을 쓰지 않고 형용사를 사용하는 경우는 비교와 대조를 나타낼 때이다.


 他高, 我矮 그는 키가 크고, 나는 작다. (작다 : ai)



4. 不(4성)는 4성의 성조를 가진 술어와 사용될 경우 不의 성조를 2성으로 바꾼다.


- 4성 발음이 강한데다 부정의 뜻이 담긴 不를 사용하면 발음이 더 세어지므로 유하게 발음하고자 2성으로 바꾼다고 한다.


不爱. 안 사랑한다. buai ▶ buai

不叫. 안 부른다. bu↘jiao ▶ bu↘jiao


- 不만 사용하면 부정의 의미가 크게 느껴지므로,  완화해서 부드럽고 완곡하게 不太(그다지 ~하지 않다)를 사용한다.


今天不太冷。오늘 그다지 춥지 않다.

今天不太热。오늘 그다지 덥지 않다.

我家不太大。우리집은 그다지 크지 않다.

那个地方不太远。저 곳은 그다지 멀지 않다.

老板今天不太高兴。사장님은 오늘 그다지 기분 좋지 않습니다.

这个店的衣服不太贵。저 가게의 옷은 그다지 비싸지 않습니다.

我觉得他不太聪明。나는 그가 그다지 똑똑하지 않다고 생각한다.


- 반어문(부정의문문)으로 '不是…吗?'를 많이 쓰는데, 확신을 갖고 물어보는 뉘앙스로 사용한다.


他不是中国人吗? 저 사람 중국인 아냐? (중국인 임을 알고 상대방에게 묻는다)

你不是认识他吗? 너 저 사람 알지 않니? (상대방이 알면서 모른체 할 때 묻는다)



강의에서 중국인의 체면에 대한 얘기를 많이 했는데, 언어에도 고스란히 체면관이 드러나는 것이 흥미로웠다. 

'외국어 > 중국어' 카테고리의 다른 글

조동사 可以  (0) 2018.11.20
정도보어(상태보어)와 得  (0) 2018.11.19
기초문법 (4) - 방위사  (0) 2018.10.20
기초문법 (3)  (0) 2018.10.05
기초 문법 (2)  (0) 2018.10.03
블로그 이미지

쵸잇

,

정보 시스템


1. 자료와 정보


자료는 일상에서 수집한 가공되지 않은 상태의 사실이나 결과값을 뜻하고, 

정보는 이 자료를 우리가 필요에 따라 쓸 수 있는 형태로 가공한 결과물이다.


학교에 비유하면, 학생시스템과 유사하다.

학생의 학적(학번, 이름, 학과, 성적, 주소 등) 데이터는 수집된 것이므로 자료이다.

만약, 학과 석차를 구한다면 전체 학생의 성적 데이터를 가공하여 만들 수 있다.

석차가 가공된 결과물로서 정보를 뜻한다. 

우리는 이 정보를 갖고 장학금, 교환학생 등 각종 의사결정에 활용할 수 있다.



2. 정보 시스템


회사, 학교 등 조직에 필요한 데이터를 수집, 저장해 두었다가 필요시 가공해서 의사결정에 활용 가능한 정보를 만드는 것이다.



3. 자료 처리 시스템


일괄 처리 시스템

- 데이터를 일정 기간 모아뒀다가 한 번에 처리하는 시스템이다.

- 예로, 전기요금 같은 공과금은 1달 동안 누적된 사용량을 바탕으로 금액이 산정된 후 우리에게 고지된다.

- 한 번에 처리하므로 작업량이 많아 시스템 성능이 높지만, 트랜잭션당 처리 비용이 적다.

(*트랜잭션 : 컴퓨터가 처리해야 할 작업 단위. ATM에서 정보를 입력하여 입출금하는 과정도 일종의 트랜잭션이다) 


온라인 실시간 처리 시스템

- 데이터를 입력하거나 무언가 처리를 요구할 경우 즉시 결과를 산출하는 방식이다.

- 교통수단 좌석 예약시스템, 은행 App 등이 대표적인 예이다.

- 처리 시간이 짧고, 비용도 저렴하다. 오류도 실시간 확인 가능하므로 즉각 처리할 수 있다.


분산 처리 시스템

- 지리적으로 분산된 여러 대의 컴퓨터를 인터넷으로 연결하여 하나의 시스템으로 사용하는 방식이다.

- 투명성과 가장 연관된 시스템이다. 어느 위치에서건 모든 사람들에게 동일한 서비스를 받을 수 있게 하는 것이다.

- 구축과 운영이 어렵지만, 한 곳에서 불량이 생겨도 대체 가능한 컴퓨터가 많으므로 신뢰성이 높다.

'컴퓨터과학 > 데이터베이스' 카테고리의 다른 글

스키마(Schema)  (0) 2018.10.03
데이터베이스 개념  (0) 2018.10.03
블로그 이미지

쵸잇

,

클래스는 수많은 데이터를 효율적으로 관리 및 수정하는데 도움을 준다.

데이터베이스를 공부하면 자주보게 될 클래스이다. 각종 데이터를 저장하고 관리한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
title1 = "개발"
author1 = "홍길동"
content1 = "개발은 쉬워요"
view_count1 = 0
 
title2 = "취업"
author2 = "홍길동"
content2 = "취업은 쉬워요"
view_count2 = 0
 
title3 = "운동"
author3 = "홍길동"
content3 = "운동은 쉬워요"
view_count3 = 0
cs



코드 설명을 하자면,

게시글의 속성 4가지인 제목(title), 글쓴이(author), 내용(content), 조회수(view_count)와 그의 데이터를 보여주고 있다. 

첫 글은 글쓴이 "홍길동"이 쓴 "개발" 제목의 "개발은 쉬워요"라는 내용을 가지고 현재 조회수는 0이다.

우리는 지금 세 개의 글을 가지고 있다.


아직은 게시글의 수가 적어서 한 눈에 들어와 수정이 용이하다.

차츰 게시글이 쌓이면 코드량은 폭발적으로 늘어난다.

클래스 역할이 여기서 발휘하게 된다.


첫번째 게시글로 간단하게 클래스를 만들어보자.


1
2
3
4
5
class Article:
    title = "개발"
    author = "홍길동"
    content = "개발은 쉬워요"
    view_count = 0
cs



클래스 이름을 게시글에 해당하는 Article로 정했다. (클래스명은 반드시 첫 글자를 대문자로 작성한다.)

나머지는 우리가 작성한 첫번째 게시글의 데이터를 입력했다.

이제 클래스는 만들어졌다. 벌써?


우린 이 Article 클래스를 가지고 4줄의 첫번째 게시글 데이터를 한 줄로 줄여볼 것이다.


1
article1 = Article()
cs



이 짧은 한 줄의 코드가 첫번째 게시글(article1)에 해당한다. 

Article 클래스의 4가지 속성과 그에 부합하는 값을 가진 이 데이터를 우린 앞으로 객체 또는 인스턴스라 부를 것이다.

클래스를 변수의 값으로 대입하려면 반드시 소괄호()를 붙여줘야 기능을 한다.


첫번째 게시글이 맞는지 확인하기 위해 article1 인스턴스의 title을 접근하여 출력해보자.

(인스턴스의 속성에 접근하려면 '.'을 찍어줘야한다.)


1
2
print(article1.title)
>> 개발
cs



우리가 작성한 "개발"이 출력됨을 확인할 수 있다.


1
2
3
4
5
6
title1 = "개발"
author1 = "홍길동"
content1 = "개발은 쉬워요"
view_count1 = 0
 
article1 = Article()
cs



4줄의 코드가 1줄로 줄어드는 마법을 경험했다.

다음은 함수를 활용하여 두번째, 세번째 게시글 데이터를 담고 있는 인스턴스를 보다 손쉽게 만들어보자.

'코딩 연습 > Python' 카테고리의 다른 글

함수  (0) 2018.10.04
for 문과 while 문  (0) 2018.10.03
클래스(class) (3) - 내장함수 활용 및 클래스 상속  (0) 2018.10.03
클래스(class) (2) - 내장함수 활용하기  (0) 2018.10.02
블로그 이미지

쵸잇

,