Dev.J

데이터베이스란? 본문

Programming/DB,SQL

데이터베이스란?

JJ____ 2021. 12. 12. 21:48

데이터베이스가 무엇일까?

체계적인 데이터의 집합. 중복 없애고 자료 구조화.

key : 칼럼

value : 로우

primary key(pk)

: 식별자. not null & unique 한 테이블에는 한개 이상의 기본키가 있어야 함.

index

: 데이터의 색인 기능, 유니크해서 주로 pk의 역할을 함. 검색 속도를 높여줌.

데이터가 추가될 때마다 값을 하나씩 올려주는 속성으로 Auto Increment가 있기도 함. (테이블에 데이터를 넣을때 id값을 넣진 않음. index값은 테이블에 row가 추가되면 알아서 가장 최근의 값에 +해서 생성이 되기 때문에 굳이 id를 넣지는 않음)

foreign key(fk)

: 한 테이블의 column 중 다른 테이블의 row를 식별할 수 있는 key

 

[Problem]

  M : N 관계?

[Solution]

  Joint Table (중간 테이블)

: 관계를 담고있는 새로운 테이블 생성. 가독성이 좋기 때문에 해당 테이블에 id를 주는 것을 선호.

 

IF? 만약 한 테이블만 단독으로 가지고있으면 이상한 정보가 있다면 중간 테이블에 칼럼을 하나 더 만들면 OK.

ex) 타임 스탬프 - post에 좋아요를 누를 때 (한명의 유저가 여러 포스트에 좋아요를 누를 수 있고, 하나의 포스트가 여러 유저의 좋아요를 받을 수 있기 때문에 M : N 관계) uid, pid를 가지고 있을 것. 여기서 좋아요가 생긴 시점인 created_at 은 user가 가지고있어도 이상하고 post가 가지고있어도 이상함. ⇒ created_at은 like 테이블이 가지고있어야함.

 

728x90