🟨 목 차 🟨
1. 스키마란 ?
1-1. 스키마의 특징
1-2. 사용자 관점에 따른 스키마
1-2-1. 개념스키마[전체적인 뷰]
1-2-1-1. 개념스키마의 특징
1-2-2. 내부스키마
1-2-2-1. 내부스키마의 특징
1-2-3. 외부스키마[사용자 뷰]
1-2-3-1. 외부스키마의 특징
2. 테이블이란 ?
2-1. 테이블의 구조
2-1-1. 행(row)
2-1-2. 열(column)
2-1-3. 도메인
2-1-4. 릴레이션 인스턴스
3. Workbench에서 스키마(데이터베이스) 만들기
Workbench에 접속하여 MySQL과 연동을 했다고 가정하에 진행하겠습니다.
[ 아직 Workbench와 MySQL과 연동을 하지 못하셨으면 아래 글을 참고해주세요 :) ]
DBMS를 이용하기전 기초 개념인 스키마, 테이블을 공부하고 Workbench를 이용하여 봅시다 :)
◼️ 1. 스키마란 ? ◼️
스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다.
구체적으로 말을 하게 되면,
- 개체의 특성을 나타내는 속성(Attribute)
- 속성들의 집합으로 이루어진 개체(Entity)
- 개체 사이에 존재하는 관계(Relation)에 대한 정의
- 이 들이 유지해야할 제약조건 들
들을 기술한 것이라고 생각하면 되겠다.
즉, 이것들을 정리해서 쉽게 말을 한다면 DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다.
◼️ 1-1. 스키마의 특징
- 스키마는 데이터 사전(Data Dictionary)에 저장된다.
- [ 데이터 사전 : 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 저장소로, 이 정보에는 항목을 참조하는데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함 한다. ]
- 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어지게 된다.
- 시간에 따라 불변인 특성을 갖는다. (시불변성)
- 데이터의 구조적 특성을 의미한다.
- 인스턴스에 의해 규정된다.
◼️ 1-2. 사용자 관점에 따른 스키마
◼️ 1-2-1. 개념스키마[전체적인 뷰]
개념스키마란 조직체 전체를 관장하는 입장에서 DB를 정의한 것이다.
따라서 조직의 모든 응용 시스템에서 필요로 하는 개체 관계, 제약조건들을 포함하고 있다.
[ DB를 효율적으로 관리하는데 필요한 접근권한, 보안정책, 무결성 규칙 등에 관한 사항들도 포함된다. ]
==>> 따라서 개념스키마를 '스키마'라고 말하기도 하며, DB전체를 기술한 것이기 때문에 한 개 만 존재 가능하다.
◼️ 1-2-1-1. 개념스키마의 특징
- 데이터 베이스의 전체적인 논리적 구조
- 데이터 베이스에 실제로 어떤 데이터가 저장되었으며 데이터간의 관계는 어떻게 되는가
- 모든 응용프로그램이나 사용자들이 필요로하는 데이터를 종합한 조직전체의 데이터베이스
- 개체간의 관계와 제약조건 명시
- 데이터 베이스의 접근 권한 보안 및 무결성 규칙에 관한 명세를 정의
- 단순한 스키마라고 하면 개념스키마를 의미
- 기관이나 조직체의 관점에서 데이터베이스를 정의
- 데이터베이스 관리자 (DBA)에 의해 구성
- 데이터 베이스당 하나만 존재
◼️ 1-2-2. 내부스키마
내부스키마란 물리적인 저장장치 입장에서 DB가 저장되는 방법을 기술한 것이다.
구체적으로 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것으로 주된 내용은
- 실제로 저장될 내부 레코드 형식
- 내부레코드의 물리적 순서
- 인덱스의 유/무
[ DB는 내부 스키마에 의해서 곧바로 구현되는 것이 아니라 내부 스키마에 기술한 내용에 따라 운영체제의 파일시스템에 의해 물리적 저장장치에 기록된다. ]
◼️ 1-2-2-1. 내부스키마의 특징
- 데이터 베이스의 물리적 저장구조를 정의
- 디스크에는 어떤 구조로 저장할 것인가
- 데이터의 실제 저장방법을 기술
- 물리적인 저장장치와 밀접한 계층
- 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마
◼️ 1-2-3. 외부스키마[사용자 뷰]
외부스키마란 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한 것이다.
◼️ 1-2-3-1. 외부스키마의 특징
- 실제로 존재하는 데이터들을 어떤 형식, 구조, 배치 화면을 통해 사용자에게 보여줄 것인가
- 전체 데이터 베이스의 한 논리적 부분 -> 서브 스키마
- 하나의 데이터베이스에는 여러 개의 외부스키마가 존재가능 & 하나의 외부스키마를 여러 개의 응용프로그램이나 사용자가 공용 가능
- 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용
- 일반 사용자는 질의어를 이용 DB를 쉽게 사용
◼️ 2. 테이블이란 ? ◼️
테이블이란 데이터베이스에서 단일 주제에 관해 행과 열로 구성되는 정보 모음이라고 일컫는다.
예를 들면, 업무용 데이터베이스는 대개 고객 정보에 관한 테이블을 가지고 있다고 치면, 고객의 계정 번호, 주소, 전화번호 등을 저장할 수 있는 여러 개의 행 으로 구성된다.
테이블 내에서 계정 번호 등과 같은 낱낱의 데이터 각각을 필드(field)라고 부른다.
즉, 하나의 행은 모든 고객들의 전화번호 등과 같은 어떤 한 필드 내의 모든 데이터로 구성된다.
◼️ 2-1. 테이블의 구조
테이블은 기본적으로 행(row)과 열(column)으로 구성되어 있다.
◼️ 2-1-1. 행(row)
- 레코드(record), 튜플(tuple) : 릴레이션 나타내는 개체의 특정 인스턴스에 관한 사실(값)들의 모임이다. 튜플로 통용된다.
- 카디날리티(cardinality) : 릴레이션 튜플의 개수
◼️ 2-1-2. 열(column)
- 속성(attribute) : 하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장되는 데 사용된다. 이때 개체는 사물이 될 수도, 추상적인 개념이 될 수도 있다.
- 필드(field) : 종종 컬럼의 대용으로 동일한 의미로 사용되지만, 필드와 필드값은 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다.
- 차수(degree) : 한 릴레이션에 들어 있는 속성의 수
◼️ 2-1-3. 도메인
- 속성(attribute) : 하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장되는 데 사용된다. 이때 개체는 사물이 될 수도, 추상적인 개념이 될 수도 있다.
- 필드(field) : 종종 컬럼의 대용으로 동일한 의미로 사용되지만, 필드와 필드값은 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다.
- 차수(degree) : 한 릴레이션에 들어 있는 속성의 수
◼️ 2-1-4. 릴레이션 인스턴스
릴레이션 인스턴스(relation instance)란 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것을 말한다.
◼️ 3. Workbench에서 스키마(데이터베이스) 만들기 ◼️
1. 정상적으로 Workbench에 들어가서 Schemas를 클릭하게 되면 'sys' 라는 한 개의 스키마가 있다.
[ 필자는 따로 추가해서 user, workbench 스키마가 있는것이다.]
2. 스키마를 추가하기 위해 도구상자 > Create a new schema(원통 모양 아이콘)을 선택한다.
[ Name 부분에 생성할 스키마 이름을 입력 후 Apply 버튼을 눌러 스키마를 생성한다. 하지만 Apply 버튼을 누르면 바로 스키마가 생성되는 것이 아니라 다른 창이 한 번 더 출력되고, 여기선 제대로 설정했는지 확인하는 창이고 자신이 생성하려고 하는 설정이 맞는지 다시 하 번 확인하고 Apply 버튼을 눌러서 스키마를 생성한다. ]
3. 스키마에 테이블 추가하기
새로 추가된 'ex_schema' 스키마의 세부 항목에 'Tables', 'Views', 'Stored Proedures', 'Functions'이 있다. 여기선 'Tables'에 해당하는 개념과 사용방법에 대해서만 설명하겠다.
위에서 테이블과 스키마에 대해 배웠으니 간단히 말해서 테이블은 데이터 구조를 정의한 명세서이고, 스키마는 데이터를 구성하거나 관리할 때 이 테이블 정보를 참고하여 작업을 진행하게 된다.
ex_schema' 스키마에 새로운 테이블을 추가하기 위해선 'Tables' 항목을 마우스 우클릭 - Create Table... 항목을 선택한다.
※ Name 부분에 생성할 Table 이름을 적어주고, 각 데이터를 저장할 Column을 추가해준다. Column을 추가해줄때 참고해야 할 것은
Datatype은 데이터가 저장될때 저장되는 타입, 그 옆에 있는 'PK', 'NN', 'UQ', 'B...', 'ZF', 'UN', 'AI', 'G' 들이 있는데 이것들에 대해 설명하자면
- PK(Primary Key) : 기본키라고 불리며, 중복 되어 나타날 수 없는 단일 값이며 null값을 가질 수 없고 오직 하나만 설정 가능하다.
- NN(Not Null) : null값을 가질 수 없다.
- UQ(Unique Key) : 기본키와 같은 성질을 같지만 차이점은 Unique Key는 하나의 테이블에 각각 컬럼마다 지정이 가능하고 여러개 설정이 가능하다.
- B(Binary) : 바이너리 데이터
- UN(Unsigned) : 정수 유형
- ZF(ZeroFill) : 0으로 채우기
- G(Generated) : 생성된 컬럼
내가 생성한 테이블의 구조는 phone, name, age의 Column을 가지고 있다.
phone을 기본키로 설정한 이유는 phone 번호는 한 아이디 당 중복없고 null 값이 되어서는 안되는 값이기 때문에 기본키('PK'), 'NN'로 설정하였고 name과 age는 중복 가능한 값이고, null 값은 있으면 안되서 'NN' 만 클릭하였다.
4. 테이블에 데이터 추가하기
위에서 생성한 'user' 테이블에 SQL 구문을 사용하여 데이터를 추가하기
[ 'user'테이블 선택 후 마우스 오른쪽 > Send to SQL Editor > Insert Satement 선택 ]
아래와 같은 사진으로 탭이 추가된다. 여기서 6,7,8번 줄에 오류가 발생하는데 그 이유는 해당하는 위치에 추가할 데이터의 정보를 적어야 하는데 정보가 적혀있지 않아서 뜨는 오류이다.
아래 사진과 같이 추가하고 싶은 번호, 이름, 나이를 추가해보자.
[ 성공적으로 데이터가 추가가 되면 Action Output에 초록색 표시로 뜬다. ]
5. 테이블에 저장된 데이터 확인하기
[ 'user' 테이블을 선택하고 마우스 오른쪽 버튼 클릭 - Select Rows -Limit 1000을 선택하면 추가된 데이터를 확인 할 수있다. ]
아래 사진을 보게되면 자동으로 검색과 관련된 SQL 구문이 추가된다.(자동으로 추가)
SQL 구문을 보게되면 데이터가 2개밖에 없는데 이것은 데이터가 2개 밖에 없기 때문이다.
'DB > MySQL' 카테고리의 다른 글
MySQL 여러개의 SELECT 합치기(UNION) feat. Workbench (0) | 2022.08.19 |
---|---|
MySQL 테이블 레코드 조합(JOIN) feat.Workbench (0) | 2022.08.19 |
MySQL 기본문법 feat.Workbench (0) | 2022.08.19 |
aws ec2 인스턴스(우분투 서버)에 MySQL Workbench 연동 (0) | 2022.08.16 |
AWS EC2 인스턴스에 MySQL 구축 (0) | 2022.08.15 |