1. 윈도우 "시작"(start) 버튼을 클릭하고 목록의 "D"에서 "DBeaver"를 클릭하거나 윈도우 "시작"(start) 버튼을 클릭하고 "스페이스 바"(Space Bar)을 클릭하여 입력창에 "DBeaver"입력 후 "DBeaver"를 클릭하여 디비버(DBeaver)를 실행합니다.
"Database Navigator"에서 "localhost - localhost:3306"를 클릭하고 "Databases"의 "test"를 클릭합니다.
"test" 데이터베이스에는 생성된 테이블(Table)이 없습니다.
쿼리(query)를 테스트와 이전 자바 시큐리티 필터 만들기(https://carrotweb.tistory.com/37)에서 로그인 처리를 위해 소스에서 계정을 비교 처리한 부분이 있었습니다. 이 부분을 마리아디비(MariaDB)로 처리할 수 있게 "test" 데이터베이스에 테이블을 생성하겠습니다.
2. "Tables"에서 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [Create New Table]를 클릭합니다.
"Tables"에 "New Table"이라고 생성되고 오른쪽에 테이블을 관리하는 기능들이 나타납니다.
오른쪽 "New Table"에서 "Properties"탭을 클릭합니다.
"테이블 명"을 "MBR_ACCOUNT_TB"로 입력합니다. 사용자 로그인 계정 테이블입니다.
"Description"은 "Member Account Table"를 입력합니다.
간단하게 데이터베이스 테이블에 대한 명명 규칙을 알려드리겠습니다.
- 테이블명은 테이블의 특성을 나타내는 용어를 사용
- 테이블명은 대문자만 사용
- 프로세스 영역을 구분하기 위해 테이블 명 앞에 약자를 사용하여 붙임
- 테이블을 나타내기 위해 테이블 명 앞이나 뒤에 ‘TB’ 붙임 ("TB_" , "_TB")
- 단어 사이는 구분자로 "_"(언더바 - underbar)를 사용
"MBR"은 사용자를 나타내는 "MEMBER"의 약자이고 "ACCOUNT"은 계정을 나타내는 단어이고 "_TB"는 테이블을 나타냅니다.
향후 데이터베이스 네이밍 룰(Database Naming rule)을 만들어서 사용하도록 하겠습니다.
"Charset"이 "latin1"로 "Collation"은 "latin1_swedish_ci"으로 되어 있습니다.
마리아디비(MariaDB) 설치 시 기본 서버 언어 셋(default server's character set)으로 "UTF8"로 설정하였기 때문에 "Charset"은 "utf8" 또는 "utf8mb4"으로 "Collation"은 "utf8_general_ci" 또는 "utf8mb4_general_ci"으로 설정해야 합니다.
여기서는 테스트를 위해 테이블 언어셋(Charset)이 아닌 컬럼에 언어셋(Charset)을 적용하겠습니다.
언어 셋(Charset)을 설정하지 않으면 로우(ROW) 등록(INSERT) 또는 수정(UPDATE) 시 오류가 발생합니다.
아래 "Columns"탭의 "컬럼명"에서 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [Create New Column]를 클릭합니다.
"Edit attribute Column"창이 나타납니다.
테이블 시퀀스(sequence)로 "Name"는 "MBR_SEQ"를 입력하고 "Properties"에서 "Data Type"를 "BIGINT"로 변경하고 "Not Null"를 체크하고 "Auto Increment"를 체크하여 자동으로 증가하도록 하고 "Comment"는 "사용자 시퀀스"로 입력하고 "확인"바튼을 클릭합니다.
위와 동일한 방법으로 컬럼을 추가합니다.
사용자 아이디(ID)로 "Name"는 "MBR_ID"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Not Null"를 체크하고 "Charset"은 "utf8"로 설정하고 "Comment"는 "사용자 아이디"로 입력하고 "확인"바튼을 클릭합니다. "Collation"은 "Charset"를 선택하면 자동으로 선택됩니다.
사용자 패스워드(Password)로 "Name"는 "MBR_PWD"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Not Null"를 체크하고 "Charset"은 "utf8"로 설정하고 "Comment"는 "사용자 패스워드"로 입력합니다.
사용자 패스워드(Password) 솔트(Salt)로 "Name"는 "MBR_PWD_SALT"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Charset"은 "utf8"로 설정하고 "Comment"는 "사용자 패스워드 솔트"로 입력합니다.
사용자 이름(Name)으로 "Name"는 "MBR_NM"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Not Null"를 체크하고 "Charset"은 "utf8mb4"로 설정하고 "Comment"는 "사용자 이름"으로 입력합니다.
등록자 아이디(ID)로 "Name"는 "REG_ID"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Not Null"를 체크하고 "Charset"은 "utf8"로 설정하고 "Comment"는 "등록자 아이디"로 입력합니다.
등록 일자(Date)로 "Name"는 "REG_DTM"를 입력하고 "Properties"에서 "Data Type"를 "DATETIME"으로 "Not Null"를 체크하고 "디폴트"는 "NOW()"를 입력하고 "Comment"는 "등록 일자"로 입력합니다.
변경자 아이디(ID)로 "Name"는 "MOD_ID"를 입력하고 "Properties"에서 "Data Type"를 "VARCHAR(100)"으로 "Charset"은 "utf8"로 설정하고 "Comment"는 "변경자 아이디"로 입력합니다.
변경 일자(Date)로 "Name"는 "MOD_DTM"를 입력하고 "Properties"에서 "Data Type"를 "DATETIME"으로 "Comment"는 "변경 일자"로 입력합니다.
문자열로 구성되는 모든 컬럼은 충분한 길이를 위해 "VARCHAR(100)"로 일괄 설정하였습니다. 실제 테이블 설계할 때는 데이터베이스 효율적인 사용을 위해 명확한 길이로 제한해야 합니다.
테이블의 "PRIMARY KEY"를 만들기 위해서 아래 "Constraints"탭의 "이름"에서 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [Create New Constraint]를 클릭합니다.
"Create constraint for table MBR_ACCOUNT_TB"창이 나타납니다.
"Columns"에서 "MBR_SEQ"를 선택하고 "확인"버튼을 클릭합니다.
"MBR_ID"를 선택할 수 있습니다. 만약 사용자 아이디가 변경될 수 있는 상황이 발생한다면 "MBR_ID" 대신 "MBR_SEQ"을 선택해야 합니다. 시스템 환경에 따라 선택하시면 됩니다.
하단에 "저장"버튼을 클릭합니다.
"Persist"버튼을 클릭합니다. 쿼리문이 실행됩니다.
CREATE TABLE test.MBR_ACCOUNT_TB (
`MBR_SEQ` BIGINT auto_increment NOT NULL COMMENT '사용자 시퀀스',
`MBR_ID` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '사용자 아이디',
`MBR_PWD` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '사용자 패스워드',
`MBR_PWD_SALT` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '사용자 패스워드 솔트',
`MBR_NM` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '사용자 이름',
`REG_ID` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '등록자 아이디',
`REG_DTM` DATETIME DEFAULT NOW() NOT NULL COMMENT '등록 일자',
`MOD_ID` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '변경자 아이디',
`MOD_DTM` DATETIME NULL COMMENT '변경 일자',
CONSTRAINT MBR_ACCOUNT_TB_PK PRIMARY KEY (`MBR_SEQ`)
)
ENGINE=InnoDB
DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci
COMMENT='Member Account Table';
쿼리문 실행이 완료되면 테이블이 생성됩니다.
만약, 테이블에 "PRIMARY KEY"가 설정되지 않으면 다음과 같은 에러가 나타납니다.
"Incorrect table definition; there can be only one auto column and it must be defined as a key"는 "테이블 정의가 잘못되었습니다. 자동 컬럼은 하나만 있을 수 있으며 키로 정의되어야 합니다."
MariaDB에서 쿼리로 테이블을 생성, 삭제, 수정하는 방법에 대한 내용은 "MariaDB 데이터베이스 생성/삭제/수정 - CREATE/DROP/ALTER DATABASE Statement"를 참고하시기 바랍니다.
쿼리에 대한 자세한 내용은 Databse 카테고리를 참고하시기 바랍니다.