# TIL: 2025-05-13 hey 제이슨!

heeezni·2025년 5월 13일
post-thumbnail

1. JSON 문자열

JSON(JavaScript Object Notation) 문자열

  • 프로그래밍 언어가 아님
  • 객체가 아니라 문자열
  • 자바스크립트의 객체 리터럴 문법 (키: 값)을 차용하여 데이터를 표현하는 문자열 형식
    (JS 객체리터럴을 전세계 개발자가 알고 있기 때문에 표기법에 별도의 표준을 지정할 필요X)

JSON 문자열의 기본 작성 양식 (JavaScript 객체 리터럴 기반)

  • 객체(Object): {}로 감싸진 키-값 쌍들의 집합
  • 배열(Array): []로 감싸진 값들의 순서 있는 집합
  • 키(Key): 문자열로 표현되며, 쌍따옴표("")로 감싸야 함
  • 값(Value): 문자열, 숫자, 불리언 값, 객체, 배열, null 등을 사용할 수 있음
  • 각 키-값 쌍은 쉼표(,)로 구분됨

🔍 JSON 문법 검증기

JSON Validator - https://jsonlint.com/

JSON 파싱

JSON 형식의 데이터를 활용하려면 해당 문자열을 파싱(parsing)하여 프로그래밍 언어에서 사용할 수 있는 구조화된 데이터로 변환해야 함

파싱(parsing) : 프로그램이 데이터를 이해할 수 있도록 문자열을 해석하는 것

JSON 내장객체

  • JSON.parse() JSON 문자열을 JS 객체로 변환
let jsonString = '{"name": "John", "age": 30, "city": "New York"}';

// JSON 문자열을 객체로 변환
let jsonObject = JSON.parse(jsonString);

console.log(jsonObject.name);  // "John"
console.log(jsonObject.age);   // 30
  • JSON.stringify() : JS 객체리터럴을 JSON 문자열로 변환
let person = {
  name: "John",
  age: 30,
  city: "New York"
};

// 자바스크립트 객체를 JSON 문자열로 변환
let jsonString = JSON.stringify(person);

console.log(jsonString);  // '{"name":"John","age":30,"city":"New York"}'

2. SQL - ERD로 테이블 설계도 만들기

ERD (Entity-Relationship Diagram)

테이블 만들기 전 설계도
엔터티(Entities)와 이들 간의 관계(Relationships)를 시각적으로 표현

※ ERD 설계 단계에서는 DBMS(MySQL, Oracle 등)를 정하지 않고 중립적으로 설계하는 것이 원칙

ERD cloud - https://www.erdcloud.com/

ERD의 주요 구성 요소

  • 엔터티(Entity): 실제 세계에서 데이터베이스가 저장하고자 하는 객체나 개념
    엔터티는 일반적으로 직사각형으로 표시됨
    예) 학생, 교수, 수업 등

  • 속성(Attribute): 엔터티가 가질 수 있는 특성
    속성은 타원형으로 표시됨
    예) 학생 엔터티는 학생ID, 이름, 나이 등의 속성을 가질 수 있음

  • 기본 키(Primary Key): 엔터티 내에서 각 인스턴스를 고유하게 식별하는 속성
    기본 키는 속성에서 밑줄로 표시됨
    예) 학생ID는 학생 엔터티의 PK

  • 관계(Relationship): 두 개 이상의 엔터티 간의 상호 작용을 나타냄
    관계는 다이아몬드 모양으로 표시됨
    예) 학생-수업 엔터티 간에 수강이라는 관계가 있을 수 있음

  • 카디널리티(Cardinality): 관계에서 한 엔터티의 인스턴스가 다른 엔터티의 인스턴스와 어떻게 연결되는지를 나타냄
    예)1:1, 1:N, M:N

ERD를 참고하여 테이블 생성하기

--OWNER 테이블 만들기
CREATE TABLE OWNER (
	OWNER_ID NUMBER PRIMARY KEY,
	OWNER_NAME VARCHAR2(20),
	PHONE VARCHAR2(20)
	);
  
--OWNER 테이블의 PK값을 자동 증가시켜 줄 SEQUENCE만들기  
CREATE SEQUENCE SEQ_OWNER
	START WITH 1
    INCREMENT BY 1;
  
--ANIMALTYPE 테이블 만들기
CREATE TABLE ANIMALTYPE(
	ANIMALTYPE_ID NUMBER PRIMARY KEY,
    TYPE_NAME VARCHAR2(20)
    );
    
--ANIMALTYPE 테이블의 SEQUENCE 만들기
CREATE SEQUENCE SEQ_ANIMALTYPE
	START WITH 1
    INCREMENT BY 1;
    
--PET 테이블 만들기
CREATE TABLE PET(
	PET_ID NUMBER PRIMARY KEY,
	PET_NAME VARCHAR2(20),
	AGE NUMBER,
	OWNER_ID NUMBER,
	ANIMALTYPE_ID NUMBER,
    
    --⭐FOREIGN KEY 생성하기⭐
	CONSTRAINT FK_OWNER_PET 
    FOREIGN KEY(OWNER_ID) 
    REFERENCES OWNER(OWNER_ID),
    
	CONSTRAINT FK_ANIMALTYPE_PET 
    FOREIGN KEY(ANIMALTYPE_ID) 
    REFERENCES ANIMALTYPE(ANIMALTYPE_ID)
	);
  
--PET 테이블의 SEQUENCE만들기
CREATE SEQUENCE SEQ_PET
	START WITH 1
    INCREMENT BY 1;

참고) 🔑 Foreign Key (외래 키)

Foreign Key 처음 배운 날

외래 키(Foreign Key)는 다른 테이블(부모 테이블)의 기본 키(PK)를 참조하는 키로, 두 테이블 간의 관계를 설정하는 제약 조건

  • 존재하는 PK만 입력 가능
    자식 테이블은 부모 테이블에 존재하는 값만 외래 키로 가질 수 있습니다.
    → 없는 값을 넣으면 "제약조건 위반" 오류 발생!

  • 부모의 값이 삭제될 수 없음
    자식이 참조 중인 부모의 값은 삭제 불가

profile
아이들의 가능성을 믿었던 마음 그대로, 이제는 나의 가능성을 믿고 나아가는 중입니다.🌱

0개의 댓글