본문 바로가기

MySQL

데이터베이스 모델링

장부에 고객 방문기록과 구매 이력 남기기 시나리오

 

 

고객의 방문기록과 방문한 사람이 어떤 상품을 구매하였는지 기록 남기기 - 1

 


 

구매를 상태와 비구매 상태 구분하기(L자 모양으로 만들어짐) - 2

 


 

데이터 베이스에 고객 테이블과 구매 테이블 만들어서 불필요 공간 없애기 - 3

문제점 - 누가 어떤 물건을 구매했는지 모름, 고객 테이블의 중복값

 


 

 

고객 테이블에 중복 회원(중복 없애기) → 고객 이름에 Primary Key(PK 기본키 설정) - 4

 


 

구매 테이블에 고객명을 추가 하기 - 5 

배달을 해야한다고 가정하면 구매 고객이름으로 고객 테이블에 접근해서 고객에 주소나 전화번호를 알 수 있다.

 


 

 

PK ( Primary Key ) : FK ( Foreign Key ) 관계 만들기 - 6

FK ( Foreign Key ) 참조할 수 있음

중요 : 현실세계를 모델링할때 아주 많이 사용되는 설계 1: N 관계

학생 : 성적 1 : N

직원 : 급여 1 : N

그렇다면 야구선수와 팀은 무슨 관계일까?

한 명의 야구선수는 하나의 팀에 소속할 수 있다. 동시에 여러가지 팀에 속할 수 없어서 1 : 1 관계이다.

 


 

 

테이블 설계단계 - 7

 


 

-- 데이터 집합 생성
create database db_tenco_market;

use db_tenco_market;

-- db 삭제 명령어
-- drop database db_denco_market;

-- 사전 기반 지식 : mysql은 대소문자를 구별하지 않는다.
-- 단, 구분하는 RDBMS도 있다.

-- 테이블 설계하기
-- 고객 테이블 생성
create table userTBL(
	userName char(3) not null primary key,
    birthYear int not null,
    addr char(2) not null,
    mobile char(12)
);

show tables;
select * from userTBL;
desc userTBL;

-- 구매 테이블 생성
create table buyTBL(
id int not null auto_increment,
	userName char(3) not null,
    proName char(3) not null,
    price int not null,
    amount int,
    primary key(id),
    foreign key(userName) references userTBL(userName)
);

show tables;
select * from buyTBL;
desc buyTBL;

foreign key (userName) references userTBL(userName)

  • 이 구문은 외래 키(foreign key)를 정의하는 데 사용된다.
  • 외래 키는 한 테이블의 열에 대해 다른 테이블의 열을 참조하는데 사용된다. 이를 통해 테이블 간의 관계를 설정하고 데이터 무결성을 유지할 수 있다.
  • 예를 들어, 위의 구문은 현재 테이블의 userName 열을 외래 키로 정의하고, 이 외래 키가 userTBL 테이블의 userName 열을 참조하도록 설정한다. 이는 현재 테이블의 userName 열이 userTBL 테이블의 userName 열에 있는 값 중 하나여야 한다는 의미이다.

auto_increment

  • 이는 열에 대한 속성으로, 해당 열의 값이 자동으로 증가하도록 설정한다.
  • 보통 이 속성은 주로 기본 키(primary key) 열에 사용되며, 새로운 레코드가 삽입될 때마다 자동으로 값이 증가하여 고유한 식별자를 생성한다.
  • 일반적으로 auto_increment 속성은 정수 데이터 타입에만 사용됩니다. 대표적으로 INT나 BIGINT와 같은 정수형 데이터 타입과 함께 사용된다.
  • 예를 들어, id INT AUTO_INCREMENT PRIMARY KEY와 같이 정의하면 id 열은 자동으로 1씩 증가하는 고유한 값을 가지게 된다. 새로운 레코드가 삽입될 때마다 자동으로 증가하는 식별자가 생성된다.
728x90

'MySQL' 카테고리의 다른 글

테이블 생성과 제약 사항 연습  (0) 2024.05.30
테이블에 데이터 입력  (0) 2024.05.29
데이터베이스 구축 절차  (0) 2024.05.28
샘플 데이터 구축  (0) 2024.05.28
DB (데이터베이스)  (0) 2024.05.28