https://www.youtube.com/watch?v=QB_GYdHUHmA 41:31부터. 정규화(DB Normalization)의 개념 간단하게 말하면 엔터티를 분해하는 과정 최소한의 데이터만을 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정이고, 기준을 수립하는 과정을 정규화라고 한다. 엔터티를 상세화하는 과정으로 논리 데이터 모델링 수행 시점에서 고려된다. 제 1 정규화부터 제 5 정규화까지 존재하지만, 실질적으로는 제 3정규화까지만 수행한다. 이상현상 정규화를 하지 않아 발생하는 현상(삽입이상,갱신이상,삭제이상) 특정 인스턴스가 삽입/갱신/삭제 될 때 정의되지 않아도 될 속성까지도 반드시 입력되어야 하는 현상이 발생한다. 정규화 단계 1. 제 1 정규화(1NF) 테이블이 컬럼의 원자성(한 ..
https://www.youtube.com/watch?v=QB_GYdHUHmA 데이터 모델링의 이해 파트는 동일 데이터 모델과 성능에서는 정규화에 포인트를 맞추는 식으로 예상된다. 엔터디(Entity), 속성(Attribute), 인스턴스(instance) - 테이블,컬럼,행들의 집 DBMS(데이터베이스 매니지먼트 시스템) 모델링의 개념 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현 데이터베이스의 구조와 관계를 정의하며, 이를 통해 데이터의 저장, 조작 관리 방법을 익힌다. 모델링의 특징 - 단명추 단순화 - 불필요한 세부 사항을 제거(표현하기 쉽게) 명확화 -정확하게 현상을 기술(의사소통 원활화) 추상화 - 간략하게 대략적으로 표현(일정하게 표기법을 따라) 데이터 ..
SQL은 읽기, 쓰기 작업으로 사용되는 것들이 있다. 읽기는 SELECT FROM 쓰기는 INSERT INTO VALUES INSERT 는 데이터를 삽입만 하기 때문에 상대적으로 안전하지만, UPDATE, DELETE, DROP, 혹은 ALTER 같은 명령들은 더 기존의 데이터를 갱신하기 때문에 훨씬 더 위험할 수 있다. CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT); CREATE TABLE diary_logs ( id INTEGER PRIMARY KEY, user_id INTEGER, date TEXT, content TEXT ); 다이어리 앱을 위한 데이터베이스를 만든다고 해보자. 사용자가 입력했을 떄, INSERT문이 실행된다. /* After ..
https://ko.khanacademy.org/computing/computer-programming/sql/relational-queries-in-sql/pt/combining-multiple-joins project_pairs2 행 id (PK)INTEGER project1_idINTEGER project2_idINTEGER project pairs는 integer로 이루어져 있어서 사람이 유효하게 읽을 수 없다. 짝지어진 타이틀의 두 행을 보고 싶다. 그러면 프로젝트의 이름은 student_projects 테이블에 있고, student id는 student 테이블과 연결되어 있다. 즉, project_pair을 student_projects와 연결해야 한다. 일단 project_pairs를 stu..
https://ko.khanacademy.org/computing/computer-programming/sql/relational-queries-in-sql/pt/joining-related-tables-with-left-outer-joins students2 행 id (PK)INTEGER first_nameTEXT last_nameTEXT emailTEXT phoneTEXT birthdateTEXT student_grades4 행 id (PK)INTEGER student_idINTEGER testTEXT gradeINTEGER student_projects1 행 id (PK)INTEGER student_idINTEGER titleTEXT 위 테이블에서 찾으려고 하는 것은 학생의 이름과 프로젝트의 리스트..
https://ko.khanacademy.org/computing/computer-programming/sql/relational-queries-in-sql/a/splitting-data-into-related-tables 테이블에서 정보를 바꿀 때, 학생의 이메일 주소가 바뀌었을 수 있다. 그런데 그런 이메일 주소가 들어 있는 테이블이 엄청 많다면? 그러면 그 학생에 대한 정보가 있는 모든 행을 찾아야 하고 똑같이 이메일을 변경해야 한다. 따라서 특정한 데이터 열은 한 개의 장소에만 저장하여 업데이트할 부분을 줄이고, 데이터의 다른 장소에 저장되는 것을 방지하는 게 일반적이다. 이렇게 하려면 테이블 사이에서 데이터를 관계해줘야 한다. 학생을 구분하기 위해서는 하나의 이름에만 의존할 수 없다. 테이블에서..