본문 바로가기

개발/Database30

정규화, 트랜잭션 정규화(Nomarization) 데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 엔터티를 작은 단위를 분리하는 과정 일반적으로 입력, 수정, 삭제 성능은 일반적으로 향상된다. 정규화를 하면 엔터티가 계속 증가하므로 JOIN으로 인한 조회 성능 저하가 발생 할 수 있다. 데이터의 중복성을 제거한다. 정규화를 할수록 엔터티는 증가한다. 1차 정규화 : 원자값이 아닌 도메인을 분해 2차 정규화 : 부분 함수 종속성을 제거 3차 정규화 : 이행 함수 종속성을 제거 4차 정규화 : 다중값 종속성을 제거 제 1정규형 모든 속성은 반드시 하나의 값만 가져야한다. 유사한 속성이 반복되는 반복그룹이 있으면 1차 정규화 대상 중복된 속성을 별도의 엔터티로 분리하면 속성 1개에만 인덱스를 생성할 수 있으므로.. 2024. 3. 6.
데이터 모델링 모델링 현실 세계를 단순화 하여 표현하는 기법 현실 세계를 추상화, 단순화, 명확화 하기 위해 일정한 표기법에 의해 표현하는 기 모델 : 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형 관리하고자 하는 데이터를 모델로 설계 특징 추상화 현실 세계를 일정한 형식으로 표현 아이디어나 개념을 간략하게 표현하는 과정 단순화 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현 명확화 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다. 모델링의 세 가지 관점 데이터 관점 데이터 위주의 모델링 어떤 데이터들이 업무와 얽혀있는지, 그 데이터 간에 어떤 관계가 있는지에 대해서 모델링 하는 방법 프로세스 관점 프로세스 위주의 모델링 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하.. 2024. 3. 2.
윈도우 함수 윈도우 함수 행고 행간의 관계를 쉽게 정의해주는 함수 집계함수(AVG, SUM, COUNT), 윈도우 함수 전용 함수(ROW NUMBER, LEAD, LAG) 순위, 합계, 평균, 행 위치 등을 조작 집계 함수 뒤에 OVER()와 함께 사용하면 윈도우 함수, 안사용하면 집계함수 AVG() COUNT() MAX() MIN() SUM() 윈도우 함수 전용 함수 DENSE_RANK() RANK() ROW_NUMBER() LAG() LEAD() 기본 형식 함수(컬럼) OVER (PARTITION BY 컬럼 ORDER BY 컬럼) PARTITION 윈도우 함수에서 group by처럼 쓰이는데, 그룹화의 기준이 되는 컬럼을 파악할 수 있다. ex ) SUM(profit) OVER (PARTITION BY count.. 2024. 2. 25.
PK FK UK CK PK (Primary Key) 기본키라고 하며 엔티티를 식별하는 대표 키,NULL일 수 없다. FK (Foreign Key) 다른 테이블의 PK를 참조하는 Key 동일한 Domain을 갖는다. 어떠한 테이블에 존재하는 다른 테이블의 정보 이기 때문에 외래 키이다. 참조하고자 하는 Column은 PK 또는 UK이여야 한다. UK (Unique Key) 테이블 내에서 해당 Column의 값은 항상 유일하다. PK와 다른 점은 NULL값이 중복 가능하다. CK (Check) 특정 Column에 값을 입력할 수 있는 범위나 조건을 지정한다. (제약 조건) 2024. 2. 15.
트랜잭션, 뷰, Date 뷰 (VIEW) 쿼리를 저장하여 결과를 여러번 반복해서 확인하는 방법. 흔히, 가상 테이블이라 한다. 실제로 동작하는 것은 내부적으로 서브 쿼리를 호출한다. 뷰의 유용성 테이블 구조가 변경되어도 뷰를 계속 사용 할 수 있다. 애플리케이션 코드에 복잡한 쿼리가 존재하지 않게 할 수 있다. 쿼리가 애플리케이션에 노출 되지 않는다. CREATE VIEW girl_group_song AS SELECT gg._id, gg.name, s.title FROM girl_group AS gg JOIN song AS s ON s._id = gg.hit_song_id; SELECT * FROM girl_group_song; 트랜잭션(TRANSACTION) 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위 ACID.. 2024. 2. 7.
사용자 권한 주기 (GRANT) root 사용자 암호 설정 SET PASSWORD FOR 'root'@'localhost' = password_option; # root 계정에서 SET PASSWORD = password_option; # 현재 사용자 DBMS에서 제공하는 보안 허가받지 않은 사용자, 즉 권한이 없는 사용자로부터 데이터의 접근을 사전에 차단 데이터베이스에서의 사용 권한 사용자가 데이터베이스 내의 특정 객체에 대해 특정 연산을 실행할 수 있는 권리 특정 객체 : 테이블, 필드, 뷰, 저장 프로시저 등 데이터베이스의 구성 요소 권한 제어가 가능한 연산의 종류 데이터 접근 관련 연산 (DML) SQL의 select, insert, delete, update 등 스키마 관련 연산 (DDL) create table, alter .. 2024. 2. 7.
유니온(UNION), 서브 쿼리 UNION 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 제거하고 보여준다. 중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느리다. UNION ALL UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법이다. 중복된 값을 모두 보여준다. SELECT A AS one, B AS two FROM TABLE_A UNION (또는 UNION ALL) SELECT C AS one, D AS two FROM TABLE_B; JOIN 과의 차이점 JOIN : 새로운 열로 결합한다. (수평결합) UNION : 새로운 행으로 결합한다. (수직결합) JOIN이 속도면으로는 더 좋지만 결과를 SELECT만 가능하다. 서브쿼리는 SELEC.. 2024. 2. 6.
조인 : JOIN (INNER, OUTER, CROSS, SELF) JOIN 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 기본키와 외래키 관계로 맺어져야하고, 일대다 관계를 형성해야한다. song 테이블 girl_group 테이블 INNER JOIN(내부 조인) 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. SELECT FROM INNER JOIN ON [WHERE 검색 조건] #INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다. SELECT gg._id, gg.name, s.title FROM girl_group AS gg JOIN song AS s ON s._id = gg.hit_song_id; # ON은 WHERE을 대신 사용해도 된다. girl_group 테이블에 없는 데이터는 나오지 않는.. 2024. 2. 5.