백엔드/MySQL

새로운 DB 생성 및 외래키 지정

짱뚱짱 2024. 8. 30. 15:50

https://koop.tistory.com/12

 

ERD 그리기 실습

ERD(Entity-Relationship Diagram) 란- DB의 구조를 시각적으로 표현- DB에 어떤 데이터가, 어떤 관계를 맺고 있는지 보여줌데이터가 어떻게 구조화되고 연관되는지를 시각적으로 표현한 다이어그램 📢실

koop.tistory.com

앞서 그렸던 ERD를 토대로, 새로 DB 및 테이블을 만들고 데이터 입력, 조회를 해보려고 한다.

 

/*
DB생성 - root 계정에서 생성
mysqlUser => 생성한 DB를 사용할수 있는 권한 부여
DB명 => school (student, attend, course 테이블 생성)
*/

--1. root 계정으로 접속
mysql -uroot -p비밀번호

--2. db생성
create database school; 

--3. mysqlUser 권한 부여 => 권한 확정
grant all privileges on school.* to 'mysqlUser'@'localhost' with grant option;
flush privileges;
-- 여기서 첨에 grant * 하니까 에러가 났었다.. grant all 을 쓰니까 해결됨.

--4. mysqlUSer 계정으로 접속
mysql -umysqlUser -p비밀번호

--5. 테이블 3개 생성
create table student(
std_num varchar(10),
std_name varchar(20) not null,
std_major varchar(20),
std_term int,
std_point int,
primary key(std_num)
);
create table course(
co_code varchar(10),
co_name varchar(20) not null,
co_professor varchar(20),
co_point int default 3,
co_time int,
co_timetable varchar(40),
primary key(co_code)
);
create table attend(
at_num int auto_increment,
at_std_num varchar(10),
at_co_code varchar(10),
at_year int,
at_term int,
at_mid int default 0,
at_final int default 0,
at_attend int default 0,
at_hw int default 0,
at_repitition varchar(1) default 'n',
at_score varchar(4),
primary key(at_num)
);

--6. 외래키 지정
alter table attend add foreign key(at_std_num)
references student(std_num); 

alter table attend add foreign key(at_co_code)
references course(co_code);
mysql> desc student;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| std_num   | varchar(10) | NO   | PRI | NULL    |       |
| std_name  | varchar(20) | NO   |     | NULL    |       |
| std_major | varchar(20) | YES  |     | NULL    |       |
| std_term  | int         | YES  |     | NULL    |       |
| std_point | int         | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> desc course;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| co_code      | varchar(10) | NO   | PRI | NULL    |       |
| co_name      | varchar(20) | NO   |     | NULL    |       |
| co_professor | varchar(20) | YES  |     | NULL    |       |
| co_point     | int         | YES  |     | 3       |       |
| co_time      | int         | YES  |     | NULL    |       |
| co_timetable | varchar(40) | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> desc attend;
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| at_num        | int         | NO   | PRI | NULL    | auto_increment |
| at_std_num    | varchar(10) | YES  | MUL | NULL    |                |
| at_co_code    | varchar(10) | YES  | MUL | NULL    |                |
| at_year       | int         | YES  |     | NULL    |                |
| at_term       | int         | YES  |     | NULL    |                |
| at_mid        | int         | YES  |     | 0       |                |
| at_final      | int         | YES  |     | 0       |                |
| at_attend     | int         | YES  |     | 0       |                |
| at_hw         | int         | YES  |     | 0       |                |
| at_repitition | varchar(1)  | YES  |     | n       |                |
| at_score      | varchar(4)  | YES  |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)

 

 

원하는 구조로 테이블 생성이 완료 되었으면, 워크벤치에서 자동으로 만들어주는 다이어그램을 통해 확인가능.

 

📢워크벤치에서 자동으로 만들어주는 다이어그램 보기

Navigator의 Schemas에서 다이어그램을 볼 DB를 더블클릭한다. 

새로 만든 실습용 DB인 school 을 더블클릭.

 

상단의 Database => Reverse Engineer 클릭

 

Next를 클릭하면 root 비밀번호를 입력 후, Next 클릭

 

다이어그램 볼 DB 선택

계속해서 Next를 누르다가, Finish를 누르면 다이어그램을 볼 수 있음.

 

 

'백엔드 > MySQL' 카테고리의 다른 글

MySQL JOIN(2)  (0) 2024.09.02
MySQL JOIN(1)  (0) 2024.08.30
ERD 그리기 실습  (0) 2024.08.29
MySQL generated columns 및 transaction  (3) 2024.08.29
MySQL 내장함수  (0) 2024.08.29