TIL 27

24.10.11 TIL

외래 키 (Foreign Key)에 대해서 더 알아보자 외래 키의 경우 다른 테이블과 관계를 맺고 있는 참조 데이터가 삭제(DELETE)또는 수정(UPDATE)될 떄 어떤 행위를 해야하는지 설정할 수 있다. 이런 행위를 연계 참조 무결성 제약 조건이라 한다. 1.CASCADE- 참조하고 있는 개체가 변경/삭제 될 경우 함꼐 변경/삭제 됩니다.- ex) 사용자가 삭제된다면 그 사용자의 모든 주문 내역도 삭제된다.FOREIGN KEY (userId) REFERENCES Users(userId)     ON DELETE CASCADE     ON UPDATE CASCADE;2. NO ACTION- 참조하고 있는 개체가 변경/삭제 될 경우 아무런 행위를 하지 않고 에러가 발생하게 된다.- ex) 사용자를 삭제할..

TIL 2024.10.11

24.10.10 TIL

UNIQUE 제약 조건은 특정 컬럼에서 중복된 값이 허용되지 않도록 설정하는 조건이다. 예를 들면 사용자가 로그인을 시도할 때 이메일이나 아이디 중복을 허용할 경우 이름, 나이 , 닉네임 같은 추가 정보를 입력받아야 사용자를 특정할 수 있을 것이다. CREATE TABLE Users(userId int(11)   NOT NULL     AUTO_INCREMENT     PRIMARY KEY,name varchar(255)   NOT NULL   UNIQUE); 이런식으로 name이라는 컬럼에 중복된 값이 허용되지 않도록 UNIQUE라는 키를 설정 해준다. INSERT INTO Users (name) VALUES ('홍길동');INSERT INTO Users (name) VALUES ('홍길동'); 이런 ..

TIL 2024.10.10

24.10.01 TIL

우선 기본 키(Primary Key) 제약 조건이란 무엇일까기본 키는 테이블에 있는 데이터를 고유하게 구분할 수 있는 정보를 나타내기 위해서 사용한다. 만약 기본 키를 설정하지 않은 테이블을 생성하려한다면 특정 데이터를 찾기위한 고유한 정보가 존재하지 않기 때문에 에러메시지가 출력되면서 테이블이 생성되지 않게된다. 출력되는 에러 메세지 : ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key CREATE TABLE Users(userId   int(11)     NOT NULL    AUTO_INCREMENT     PRIMARY KEY,name varch..

TIL 2024.10.01

24.09.25 TIL

일단 SQL 제약조건 사용에 예를 들기 위해 테이블을 설계해보자 고객 테이블IDname1 홍길동2먹방 음식 테이블IDnameprice1후라이드치킨100002양념치킨120003반반치킨130004고구마 피자90005아보카도 피자110000 여기서 우리는 연관 관계를 고민해봐야 한다.고객이 음식 주문 시 주문 정보는 어느 테이블에 들어가야 할까?고객 테이블에 들어가는게 맞을까 아니면 음식테이블에 들어가는게 맞을까?우선 고객테이블에 넣어보자IDnamefoodname1홍길동후라이드치킨2먹방 3홍길동양념치킨 이렇게 될 경우 문제접은 고객의 이름이 중복되어 나타난다는 것이다.그럼 이번에는 음식 테이블에 추가 해본다고 하자IDnamepriceuserID1후라이드 치킨1000012양념치킨1200013반반치킨13000 4..

TIL 2024.09.25

24.09.24 TIL

SQL의 제약조건제약 조건은 각 컬럼들간의 제한사항을 관리하고 조건을 위반하는 데이터를 방지하여 데이터베이스의 무결성을 보장하는 규칙입니다.무결성 : 데이터가 결함없이 정확하고 완전한 상태를 의미 데이터베이스에서 제약 조건은 매우 중요하다.사용자의 이메일이 중복되는 경우나 이메일이 아닌 다른 데이터로 사용자를 고유하게 구분할 수 없다면 해당 사용자의 정보를 정확하게 가져올 수 없다. 제약조건은 테이블을 분석할 때 설정된 컬럼의 속성을 바탕으로 해당 테이블이 어떤 역할을 하는지 어떤 데이터를 저장하고 있는지 명확하게 인지할 수 있게 도와준다. 제약 조건의 종류1. 고유(Unique) 제약 조건 : 테이블에 소속된 특정 컬럼이 중복된 키를 가질 수 없는 조건사용자 아이디, 이메일과 같은 고유한 정보를 저장할..

TIL 2024.09.24

24.09.23 TIL

SQLSQL 이란 데이터베이스에서 사용되는 생성, 삽입, 조회 명령문을 SQL(Structured Query Language)라고 한다. SQL의 종류1. DDL (Data Definition Language)2. DML (Data Manipulation Language)3. DCL (Data Control Language)4. TCL (Transaction Control Language) DDL은 데이터를 정의할 때 사용하는 언어 테이블이나 데이터베이스를 생성, 수정, 삭제와 같은 작업을 할 때 사용 CREATE : Database, Table, View, Index 등을 생성할 때 사용CREATE DATABASE 데이터베이스명;CREATE TABLE 테이블명 {컬럼명 컬럼속성}DROP :  Datab..

TIL 2024.09.23

24.09.20 TIL

관계형 데이터 베이스에는 테이블 이라는 것이 존재한다. 테이블은 엑셀과 유사한 형태를 지니고 있다.userIdnamepassworduserNameaaaa홍길동1234미스터홍    요런 느낌 각 행은 고유한 데이터(record) 'ex) aaaa, 홍길동'를 각 열은 해당 데이터의 속성(field) 'ex) userId, name '를 표현한다. 이 테이블 간에는 서로 연관 관계(Relationship)를 가질 수 있다는 것이다. 이러한 관계를 통해 더욱 복잡한 쿼리를 작성하고 바로 이게 "관계형 데이터베이스"라는 것이다. 비관계형 데이터베이스는 유여한 데이터 구조를 가지기 때문에 저장(Write)과 읽기(Read) 작업이 더욱 빠르고 복잡한 비즈니스 로직 없이 데이터 읽기와 쓰기에 중점을 둔 서버에서 주..

TIL 2024.09.20

24.09.19 TIL

에러 처리 미들웨어를 작성한 구문 에러처리 미들웨어가 필요한 이유는 원하지 않는 비지니스 로직이 수행되지 않도록 하기위해서 작성된다.에러는 우리가 예상하지 못한 문제를 미리 방지하여 서버 코드를 더욱 안정적으로 구성할 수 있게된다. 위 구문에서 4번째 줄은 Joi 검증에서 에러가 발생할 경우 에러메시지를 클라이언트에게 반환한다.7번째 줄은 그 외에 에러가 발생할 경우에 반환한다. try{작동중인 구문}catch(err){next(err)}구문 실행중 에러가 발생할 경우 에러 미들웨어로 넘기는 구문.

TIL 2024.09.19

24.09.13 TIL

app.use((req, res, next) => {   console.log('첫번째 미들웨어');   next(); }); app.use((req, res, next) => {   console.log('두번째 미들웨어');   next(); }); app.use((req, res, next) => {   console.log('세번째 미들웨어');   res.json({ message: 'Hi' }); }); 미들웨어가 다음 미들웨어를 실행하기 위해서는 next가 필요하다 만약 next가 없고 클라이언트에게 response도 전달하지 않는다면 무한정 대기하는 상태가 될 수있다 그렇기에 미들웨어를 작성할때 next를 쓰거나 클라이언트에게 response를 반환하는 작업을 해야한다. 현재 미들웨어에서 ..

TIL 2024.09.13