본문 바로가기

DB13

[DB] DB스튜디오 과제 리뷰 2 | 데이터 모델링과 개념적 설계 개요지난 1편에 이어서, 이번 과제도 배울 점이 많아 리뷰를 작성한다. 요구사항 1  지금까지 과제에서는 DATABASE 설계 명목 하에 개체와 속성이 뚜렷하게 보이는 식으로 요구사항이 정의되었다.그런데 원래 요구사항은 대화하는 방식으로 주어진다. 이번 과제부터 자연어 요구사항이 주어졌고.. 이러한 경우는 "모호성 제거" 단계를 거쳐야 한다.     내 설계는 위와 같은데, 피드백을 받으면서 느낀 점은 다음과 같다. 요구사항이 빠졌는지에 대해 면밀히 검토하는 것은 좋다. 그런데 개체 간의 단순한 관계의 의미를 넘어서 응용 관점을 검토해보는 태도가 필요하다. 그러니까 위 설계같은 경우는 Customer와 Book 사이에 order라는 관계는 의미상으로는 완벽하다. 하지만 다음 질문에 답하기 어려운 설계다... 2024. 4. 17.
[DB] DB스튜디오 과제 리뷰 | 데이터 모델링과 개념적 설계 개요DB 스튜디오 과목에서 매주 요구사항에 맞게 데이터 모델링을 하고, 개념적 설계를 진행한다.각각의 팀이 설계한 과제물에 대해 게시판을 통해 1차 토의하고, 강의시간에 교수님과 2차 토의를한다.토의에서 나왔던 내용을 중심으로 과제에 대한 리뷰를 작성해보도록 한다. 요구사항첫 설계의 요구사항은 다음과 같다. 하나는 UNIVERSITY DB로, 일반적으로 대학교에서 학생, 학부, 과목 등을 관리하는 요구사항이다. 두 번째는 MAIL_ORDER DB로, 쉽게 말해 구매 서비스다. 개체와 속성, 관계 추출먼저 ERD를 그리기 전, 텍스트로 개체와 속성, 관계를 추출하는 과제를 수행하였다. 이때 composite, complex attribute 등의 속성 특징과 관계를 속성으로 나타내는 것을 활용하였다. 특히.. 2024. 3. 27.
[SQL] JOIN 개요 데이터베이스를 관리할 때는 데이터베이스 품질 보장을 위해 정규화(관계형 스키마를 세분화하는 것)를 한다. 이렇게 세분화된 테이블들은 연결되어 사용해야 하는 경우가 있다. 예를 들어, 학생 정보 테이블과 학과 정보 테이블이 정규화에 의해 분리되었고 학생의 학과 정보를 위해 두 테이블을 연결하여 정보를 얻는다. 이러한 연결을 위한 연산이 JOIN이다. JOIN 종류 카티션 곱(Cartesian Product): 모든 행에 대한 조인(합집합) 동등 조인(equi join): 공통 속성을 기준으로 같은 값을 가지는 행 조회(교집합) 비동등 조인(non-equi join): 공통 속성을 기준으로 >, =, 2024. 2. 3.
[DB] TRUNCATE, DELETE | RDBMS 삭제 명령어 비교 개요 로컬에 더미로 쌓아둔 데이터가 너무 많고 난잡해서 database 값들을 초기화했는데.. 여기서 문제가 생겼다. 현재 Table 구조는 상당히 복잡하게 연관관계가 매핑되어있다. 예를 들어, 유저가 회원가입을 하면 account 테이블이 생성되고, 이와 관련하여 account_a, account_b, account_c… 이런식으로 관계가 정의되어 있기에 update나 insert, delete 등의 명령어는 주의해서 사용해야 한다. 나처럼 무심코 정리했다간 에러지옥에 파묻힐것이다ㅠ.ㅠ 실서버나 staging과 같은 테스트 서버에 데이터를 쉽게/자주 조작하면 안되겠지만, local은 테스트를 위해 이런저런 작업을 하게된다. 이때 무심코 delete를 하기보다는… truncate라는 명령어를 사용하는 것.. 2024. 1. 24.
[DB] H2 DB 설치와 초기세팅 H2 설치 https://h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp h2database.com 초기 세팅 다운받은 폴더의 압축을 풀어준다. 이후 cmd 창으로 h2가 존재하는 폴더에 접근한 뒤 명령어를 통해 h2를 실행한.. 2023. 8. 14.
[DB] RDMBS | ERD설계 시 주의할 점 내가 맡기로한 챗봇 구현(Amazon Lex V2)이 기획 상에서 사라져서 급하게 ERD 설계와 API 명세 작성을 도맡았다. 2-3 주 간 Lex에만 매달렸고 이번 주에 Amazon에서 제공하는 챗봇 서비스를 학습&연동 시킬 기대감이 컸어서 너무 아쉬웠지만,, 아쉬운 마음이 큰 만큼 할 수 있는 것에 최선을 다하여 기여도를 높이기로 다짐했다..🥲 암튼 각설하고! 사실 이렇게 본격적으로 ERD를 처음 설계해봐서 공부할 게 매우 많았다. 이 포스팅을 통해 하나씩 정리해보려고 한다. Relational data model Relation in mathematics set은 서로 다른(중복 없는), 순서와 상관없는 요소를 가지는 collection이다. 두 개의 집합에 쌍(pair)를 설정해보자. 가능한 모든.. 2023. 4. 16.
[DB] SQL vs NoSQL 프로젝트 데이터베이스를 설계하는데 sql vs nosql에 대해 정확히 파악하고 결정해야겠다는 생각이 들어서 이번에 제대로 공부해보았다. 회원 정보가 있는 웹사이트는 table대로 관리를 해야하니까 대부분 sql을 사용한다고 생각했는데 꼭 그런 것만은 아니었다. 페이스북이나 인스타그램같은 소셜 미디어에서는 사용자 이용수가 대폭 증가할 확률이 높고, 간단한 데이터들이 저장되기에 nosql을 사용한다. sql을 사용하는 경우는 유저, 트랜젝션 등을 민감하게 관리해야 할 때이다. 자세히 알아보자. SQL vs NoSQL 2010-03: 빅데이터에 대한 관심이 쏟아지면서 rds로 해결할 수 없는 문제들이 나오기 시작함. 수평적 확장성(Horizontal Scalability)vs 수직적 확장성(Vertical .. 2023. 4. 11.
[DB/MySQL] 기본 명령어 4 | HAVING, ROLLUP, JOIN,.. etc. HAVING WHERE과 비슷함. GROUP BY 뒤에서 집계 함수에 대한 조건을 제한한다. SELECT CountryCode, MAX(Population) FROM city GROUP BY CountryCode HAVING MAX(Population) > 8000000 ROLLUP 총합 / 중간 합계 순열 형태로 집계 결과 보여줌 WITH ROLLUP 이런식으로 사용함 SELECT CountryCode, Name, SUM(Population) FROM city GROUP BY CountryCode, Name WITH ROLLUP; JOIN 조건(JOIN A ON B)을 통한 여러 테이블의 조합 SELECT * FROM city JOIN country ON city.CountryCode = country.. 2023. 2. 24.
[DB/MySQL] 기본 명령어3 | ORDER BY, GROUP BY, DISTINCT, LIMIT ORDER BY 파이썬 sort / sorted와 똑같음. 오름차순이 default이고 내림 차순으로 하려면 뒤에 DESC(Descending)을 붙여주면 된다. SELECT * FROM city ORDER BY Population; SELECT * FROM city ORDER BY CountryCode ASC, Population DESC; # USA의 인구수 오름차순 출력 SELECT * FROM city WHERE CountryCode = 'USA' ORDER BY Population; GROUP BY 말 그대로 그룹으로 묶어줌. 집계함수(Aggregation : AVG, MIN, MAX, COUNT, STDEV(표준편차), VARIANCE(분산))과 함께 사용 CountryCode 별로 인구수의 .. 2023. 2. 24.
[DB/MySQL] 기본 명령어2 | BEETWEEN, IN, LIKE, ALY, ALL BETWEEN 숫자로 구성된 연속적인 데이터 BETWEEN, AND SELECT * FROM city WHERE Population 7000000 AND 8000000 IN() 이산값 조건 SELECT * FROM city WHERE Name IN('Seoul', 'Pusan') LIKE 문자열의 내용 검색 (%랑 _ 사용) KOR 기억안남.. KO 뒤에 한 글자 머였더라..? 할 때 SELECT * FROM city WHERE CountryCode LIKE 'KO_' Tel로 시작하는 .. 도시 뭐더라..? 할 때 SELECT * FROM city WHERE Name LIKE 'tel %' ANY / SOME 서브 쿼리의 여러가지 조건 중 하나만 만족해도 출력 SELECT * FROM city WHER.. 2023. 2. 23.
[DB/MySQL] 기본 명령어 기본 명령어 1. SHOW / SHOW TABLE SHOW TABLE; # world db의 테이블 이름 보기 SHOW TABLE STATUS; # world db의 데이터 이름 + 각각의 table 정보 조회 * world는 실습 예제 데이터 베이스이다. 2. DESCRIBE DESCRIBE table_name # DESC로 줄여서 사용 가능 데이터 베이스 내에 존재하는 테이블의 data를 확인 할 수 있다. 각각의 영역은 Field로 표시된다. 예제 데이터베이스 world의 테이블은 city, country, countrylanguage가 있고 위 코드를 실행하면 city에 존재하는 내용에 대해 확인 가능하다. 3. SELECT ⭐️⭐️⭐️ 데이터를 가져오는 명령어 FROM SELECT * FROM .. 2023. 2. 2.
[DB/MySQL] MySQL이란 SQL이란 DML(Data Manipulation Language), DDL(Data Definition Language), DCL(Data Control Language)로 나뉜다1. 1. DML (Manupulation : 다루기, 조작) 데이터를 조작하는 언어로, 주로 데이터 선택/삽입/수정/삭제하는 일을 한다. DML은 테이블의 행을 대상으로 작동하며 DML을 사용하기 위해서는 조작할 테이블이 정의되어 있어야 한다. ⭐️SQL 구문 중 SELECT, INSERT, UPDATE, DELETE.⭐️ 2. DDL (Definition : 정의) 데이터베이스, 테이블, 뷰, 인덱스 등의 db 개체를 생성/삭제/변경하는 일을 한다. ROCKBACK이나 COMMIT은 사용할 수 없다. 실행 즉시 MySQL에.. 2023. 2. 1.