1. 샘플 데이터

- [DM발송내역 샘플 데이터]

DM발송번호 고객ID 발송일자 DM 내용 발송부서 고객등급 캠페인구분
1 aaa 20171201 안녕하세요? 10 1 C1
2 bbb 20171201 안녕하세요? 10 2 C1
3 ccc 20171201 안녕하세요? 10 3 C1
4 ddd 20171224 안녕하세요? 20 V C2
5 eee 20171224 안녕하세요? 20 VV C2
6 fff 20171224 안녕하세요? 30 1 C3

- [도서정보 샘플 데이터]

고객ID 성명 관심상품 전화번호 이메일 거주지역
aaa 김고객 의류 010-1111-1111 aaa@korea.com 서울
bbb 이고객 의류 010-1111-1112 bbb@korea.com 서울
ccc 박고객 식료품 010-1111-1113 ccc@korea.com 경기
ddd 홍고객 공산품 010-1111-1114 ddd@korea.com 대전
eee 조고객 컴퓨터 010-1111-1115 eee@korea.com 대전
fff 백고객 관광 010-1111-1116 fff@korea.com 울산
 

2. DM발송내역정보와 고객정보테이블에 데이터 생성

 
INSERT INTO DM_TBL VALUES (1,'aaa',TO_DATE('20171201','YYYYMMDD'),'안녕하세요?','10','1','C1');
INSERT INTO DM_TBL VALUES (2,'bbb',TO_DATE('20171201','YYYYMMDD'),'안녕하세요?','10','2','C1');
INSERT INTO DM_TBL VALUES (3,'ccc',TO_DATE('20171201','YYYYMMDD'),'안녕하세요?','10','3','C1');
INSERT INTO DM_TBL VALUES (4,'ddd',TO_DATE('20171224','YYYYMMDD'),'안녕하세요?','20','V','C2');
INSERT INTO DM_TBL VALUES (5,'eee',TO_DATE('20171224','YYYYMMDD'),'안녕하세요?','20','VV','C2');
INSERT INTO DM_TBL VALUES (6,'fff',TO_DATE('20171224','YYYYMMDD'),'안녕하세요?','30','1','C3');



INSERT INTO BOOKINFO_TBL VALUES ('aaa','김고객','의류','010-1111-1111','aaa@korea.com','서울');
INSERT INTO BOOKINFO_TBL VALUES ('bbb','이고객','의류','010-1111-1112','bbb@korea.com','서울');
INSERT INTO BOOKINFO_TBL VALUES ('ccc','박고객','식료품','010-1111-1113','ccc@korea.com','경기');
INSERT INTO BOOKINFO_TBL VALUES ('ddd','홍고객','공산품','010-1111-1114','ddd@korea.com','대전');
INSERT INTO BOOKINFO_TBL VALUES ('eee','조고객','컴퓨터','010-1111-1115','eee@korea.com','대전');
INSERT INTO BOOKINFO_TBL VALUES ('fff','백고객','관광','010-1111-1116','fff@korea.com','울산');

 

3. 데이터 확인

SELCT * FROM 테이블명;

1. 요구사항

가. 본 과제에서는 한국백화점 DM발송시스템을 구축을 위한 프로그램이다. DM 발송 대상자 조회, 캠페인 DM 발송 업무로 이루어져 있다. 일자별 DM 발송 대상자 조회 및 ,일자별 DM발송 예약리스트를 조회 할 수 있다.
나. 프로그램 개발을 위해 데이터베이스 설계를 위해 업무요건을 확인하고, 필요한 작업을 수행하시오.

2. 테이블 명세서

- [DM발송내역 테이블 명세서 (테이블 명 : DM_TBL)]

순서 컬럼ID 컬럼명 형태 길이 NULL 비고
1 dmno DM발송번호 number 8 NOT NULL Primary Key
2 custid 고객ID varchar2 10    
3 maildate 발송일자 date      
4 contents DM내용 varchar2 13    
5 dept 발송부서 char 2    
6 grade 고객등급 char 2    
7 campain 캠페인구분 char 2    

- [고객정보 테이블 명세서 (테이블 명 : bookinfo_tbl)]

순서 컬럼ID 컬럼명 형태 길이 NULL 비고
1 custid 고객아이디 varchar2 10 NOT NULL Primary Key
2 author 성명 varchar2 20    
3 goods 관심상품 char 20    
4 phone 전화번호 varchar2 13    
5 email 이메일 varchar2 20    
6 area 거주지역 varchar2 20    

 
 

3. 테이블 생성

- DM발송목록 테이블 생성

CREATE TABLE DM_TBL(
dmno NUMBER(8) NOT NULL PRIMARY KEY,
custid VARCHAR2(10),
maildate DATE,
contents VARCHAR2(13 char),
dept CHAR(2),
grade CHAR(2),
campain CHAR(2)
);

* contents char을 기술해주면 글자수로 13자리가 된다. 그냥 13으로 할 경우 byte 단위 13자리

dmno명을 잘못 입력하여 칼럼명 수정

- 고객정보 테이블 생성

CREATE TABLE BOOKINFO_TBL(
custid VARCHAR2(10) NOT NULL PRIMARY KEY,
author VARCHAR2(20),
goods CHAR(20),
phone VARCHAR2(13),
email VARCHAR2(20),
area VARCHAR2(20)
);

goods 칼럼 자료형을 char(20)으로 변경

4. 테이블 확인

- DESC 테이블명;

1. 다운로드 및 환경 셋팅

1.1 다운로드 및 설치

- [다운로드](https://www.oracle.com/database/technologies/xe-prior-release-downloads.html)

- setup파일 실행하여 System 계정에 쓰일 패스워드 생성하고 설치 완료

- CMD(명령프롬프트)에서 sqlplus 명령어로 설치 확인

1.2 SCOTT 계정 활성화

- 오라클에서 기본적으로 제공하는 계정으로 연습하기에 좋은 샘플 데이터가 들어있다. 

- 오라클 처음 시작 시 SCOTT 계정이 잠겨있는 경우가 많아 명령어로 풀어준다.

- 명령어: ALTER USER SCOTT IDENTIFIED BY TIGER ACCOUNT UNLOCK;

- 만약, SCOTT 계정이 존재하지 않는다고 출력되면 오라클 설치경로에서 scott.sql 파일을 찾아 경로를 입력해 직접 실행한다.

scott 계정이 없는 경우

- 경로: C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql 

- 경로 맨앞에 @를 붙여 sqlplus를 실행중인 CMD창에 입력해준다. 

scott.sql 실행

참조

- https://cceeun.tistory.com/198

 

[Oracle] 오라클 11g Express Edition 설치하기 | 오라클 DB 설치 | Database | 로컬 서버 세팅 | Oracle 11g 다운

PC가 포맷되면서 기존에 깔려있던 자료가 다 날아갔다. 그래서 오라클도 다시 깔아야하는데, oracle 공식 홈페이지에서는 11g, 12c에 대한 Express Edition(무료버전) 배포를 중단하였다. 18c와 21c밖에 존

cceeun.tistory.com

- https://velog.io/@fluffycow/%EC%98%A4%EB%9D%BC%ED%81%B4-SCOTT-%EA%B3%84%EC%A0%95-%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

오라클 SCOTT 계정 활성화하는 방법

SCOTT은 오라클에서 기본으로 제공하는 계정입니다. 연습하기에 좋은 샘플 데이터가 들어있어 오라클을 처음 시작하는 학생들이 많이 사용합니다.오라클을 처음으로 시작하면 SCOTT 계정이 잠겨

velog.io

 

BOJ_10419 지각 -Python3

문제분석

1. 관찰
- 교수님이 t시간 만큼 지각으로 하시면, s = t**2 만큼 일찍 끝내주신다.
- 수업시간 = t + t**2 인 경우 수업이 바로 끝날 수 있다.


2. 복잡도
- O(t*c) T*C = 100*10000 >> 가능

3. 자료구조
- 테스트케이스, 수업시간 : int

해결코드

import sys
si = sys.stdin.readline

T = int(si())
for _ in range(T):
    c = int(si()) # 수업시간
    t = 0
    while True:
        t+=1
        if t+t**2 <= c:
            continue
        else:
            print(t-1)
            break

'Etc > PS' 카테고리의 다른 글

BOJ_3040 백설 공주와 일곱 난쟁이 -Python3  (0) 2022.08.09
BOJ_1977 완전제곱수 -Python3  (0) 2022.08.09
BOJ_17173 배수들의 합 -Python3  (0) 2022.08.07
BOJ_2309 일곱 난쟁이 -Python3  (2) 2022.08.05
BOJ_7568 덩치 -Python3  (0) 2022.08.05

BOJ_17173 배수들의 합 -Python3

문제분석

1. 관찰
- 서로다른 M개의 정수 K가 오름차순으로 주어진다.
- 1이상 N 이하인 수의 합을 구해라
=> k의 배수들을 중복없이 모두 찾아 더한다.

2. 복잡도
- O(N*M) = 1000*1000 >> 가능

3. 자료구조
- 배수들 : int[]

해결코드

import sys 
si = sys.stdin.readline

N, M = map(int, si().split())
nums = list(map(int, si().split()))
ans = []

for i in range(1,N+1):
    for j in range(M):
        if i%nums[j] == 0 and i not in ans:
            ans.append(i)
print(sum(ans))

'Etc > PS' 카테고리의 다른 글

BOJ_1977 완전제곱수 -Python3  (0) 2022.08.09
BOJ_10419 지각 -Python3  (0) 2022.08.07
BOJ_2309 일곱 난쟁이 -Python3  (2) 2022.08.05
BOJ_7568 덩치 -Python3  (0) 2022.08.05
BOJ_1436 영화감독 숌 -Python3  (0) 2022.08.05

모듈이란?

소프트웨어 설계에서 기능단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위
즉, 기능단위로 분해되어있고 추상화되어 재사용 및 공유가 가능하도록 구현된 것

 

그럼 모듈화는 뭔가?

소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법

 

모듈화를 했을 때의 장점이 뭔가? 

1. 프로그램의 효율적인 관리 및 성능 향상
2. 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
3. 소프트웨어 시험, 통합, 수정 시 용이성 제공
4. 기능의 분리가 가능하고 인터페이스가 단순
5. 오류의 파급 효과를 최소화
6. 모듈의 재사용 가능으로 개발과 유지보수가 용이
정리해서 말하자면, 기능단위로 분리되어 코드의 복잡도가 감소된다. 따라서, 코드를 이해하기에 용이하고 재사용 및 유지보수에도 좋다.

 

모듈화의 목표는 무엇인가?

- 모듈 간 결합도의 최소화(Lose Coupling)
- 모듈 내 요소들간의 응집도 최대화(Strong Sohension)

+ Recent posts