본문 바로가기

DB모델링17

1:M 관계와 재귀적 관계 (part 3) ○ 보통 아래 사진과 같이 회사별 부서, 그리고 부서의 하위 팀을 위한 1:M관계로 모델링을 시행함 ○ 위왁 같은 모델링시 1:M관계는 성립되지만 지속해서 테이블이 늘어나는 구조가 되어버려 개발자들 또는 DB관리자 입장에서 비효율적인 업무를 진행할수밖에 없음. ○ 이를 위해 적용할 수 있는 방법이 테이블 재귀적 관계 모델링임. ○ 재귀적 관계란 자기자신을 참조, 즉 자기 테이블의 PK를 참조하는 컬럼(필드)을 같은 테이블에 생성하여 자기자신과의 관계를 맺는 것임. 따라서 부모테이블이 자식테이블이며, 자식테이블이 부모테이블 역할을 할수 있음. ○ 위 사진처럼 부서1은 부서ID를 PK로 선언하였으며 이를 상위부서ID 컬럼이 참조하는 구조임. 즉, 재귀적 관계임을 알 수 있음 ○ 우측 사진과 같이 총무부, 영.. 2023. 10. 13.
1:M 관계 (part 2) ※ 이전 게시물 1:M 관계 (part 1)이어서 다른 예제진행 □ 주제 : 회사/부서 모델링 □ 세부내용 ○ 회사 테이블 생성 (PK값에 자동증분설정 X) ○ 부서 테이블 생성 (PK값에 자동증분설정 X) ○ 회사와 부서 테이블간 관계 설정 □ 쿼리문 --회사 및 부서 추가① --PK 속성에 Auto-increment를 지정안했기 때문에 PK값을 직접 지정해야함 insert into company_tb values(1,'samsung','12341234') insert into dept_tb values(1,1,'전략기획') insert into dept_tb values(2,1,'해외마케팅') insert into dept_tb values(3,1,'국내마케팅') insert into dept_tb .. 2023. 10. 12.
1:M 관계 (part 1) □ 한쪽이 관계를 맺은 쪽의 여러객체를 갖는 것을 의미하며, 가장 흔하게 나타나는 매우 일반적인 형태임 □ 부모와 자식 관계가 대표적 예가될 수 있으며 컴퓨터 디렉터리 구조 역시 마찬가지임 □ 트리구조 형태를 가짐 □ 테이블은 서로 선천적으로 관계를 가지고 있음 □ 관계는 반드시 2개 테이블간의 관계만 있음 □ FK(외래키/Foreign Key)는 참조테이블에서의 PK(Primary Key)임 □ PK와 FK를 통하여 관계설정 □ 법칙은 아니지만 작명시 PK명과 FK명을 동일하게 설정하는 것을 권장함 □ 부모는 반드시 한개이대, 자식은 N개임. 부모, 즉 참조할 PK가 2개라면 오류발생 또는 자식테이블에는 있지만 부모테이블에 참조할 PK 값이 없다면 이 또한 오류 원인. □ 예제 : 학년, 반 모델링 ○.. 2023. 10. 11.
테이블 생성 및 Auto_Increment 설정 □ 테이블 생성시 create 문 활용 : Create 테이블명 (필드1 데이터타입설정 Null여부 PK지정 Auto_Increment지정 기본값 지정, 필드2 데이터타입설정 Null여부 ~~~~ 기본값 지정); CREATE TABLE Table_Name ( ID Int(6) NOT NULL PRIMARY KEY Auto_Increment, --자동증분 Auto_Increment 지정 first_Field VARCHAR(30) NOT NULL default 적재할 기본값, --default 활용하여 기본값 설정 second_Field BOOLEAN NOT NULL default 적재할 기본값, third_Field VARCHAR(10) NOT NULL, fourth_Field DATETIME NOT NU.. 2023. 10. 10.
PK 지정 및 자동증분 설정 : MSSQL □ 테이블 생성 --테이블생성 create table Student (Student_ID INT NOT NULL PRIMARY KEY, Student_Name VARCHAR(50) Not NULL); □ 데이터 삽입 ○ Auto-Increament(자동증분) 지정 ○ ID 필드 속성을 Auto-Increament(자동증분) 지정하였으므로 데이터 삽입시 Student_Name만 Value 값으로 기재하여 데이터 삽입 insert into Student values ('hong'); insert into Student values ('kim'); insert into Student values ('lee'); insert into Student values ('park'); insert into Studen.. 2023. 10. 10.
PK(primary Key) 설계 (1) 유일하고 모든 레코드에 Not Null일 수 있는 컬럼 탐색 (2) 후보 식별자가 없는 경우 임의의 식별자를 부여하여 생성 → 인조 식별자 *인조 식별자를 생성하는 경우가 많음 (3) PK 데이터 타입결정 - 레코드 발생 가능 최대 수 및 빈도 등을 예측하여 적절한 타입 선정필요 ex) 월 12만개의 행이 생성될 경우 int 타입으로 결정 및 적용 - Int 등 숫자를 PK로 채택할 경우 Auto-Increament(자동증분) 속성 사용가능 - String을 사용하면 숫자가 아닌 문자를 섞어서 PK값에 의미를 부여할 수 있음 - 특별한 의미를 부여할 필요가 없을 경우 정수형을 사용하는 것이 바람직함 (4) PK는 고유 식별자 그 자체기능으로 충분함, 따라서 PK 값에 어떤 의미를 부여하는 것은 부.. 2023. 10. 10.
데이터 타입 구 분 데이터 타입 범위 저장소 크기 정수 Bit 0 또는 1 bit Int -2,147,483,648 ~ 2,147,483,647 4 바이트 Smallint -32,768 ~ 32,767 2 바이트 Tinyint 0 ~ 255 1 바이트 Bigint 약 920경 8 바이트 실수 Float(n) -1.79E+308 ~ 1.79E+308 (n = 1~24) 4 바이트 Float(n) -1.79E+308 ~ 1.79E+308 (n = 25~53) 8 바이트 문자 char(n) n = 1~8000 n 바이트 Varchar(n) n = 1~8000 입력한 데이터의 가변길이 Text 최대 2,147,483,647 - *재무관련 돈(Money)에 대한 정확한 연산과 소수점자리를 위해 데이터 타입을 decimal, .. 2023. 10. 8.
키(Key) □ 키의 정의 ○ 하나의 테이블에서 각 레코드를 고유하게 식별할 수 있는컬럼 ○ 키의 조건 : Not Null, Unique ○ 테이블 디자인시 키를 정하고 테이블을 데이터베이스에 만들때 명시적으로 키 선언 ○ 키는 키에 대응하는 인덱스 테이블이 생성됨(인덱스 테이블은 키 값에 의해 정렬됨) □ PK(Primary Key) ○ 테이블 컬럼에서 각 레코드를 유일하게 식별할 수 있는 컬럼 또는 컬럼집합 ○ 유일무일한 컬럼 ○ 테이블은 각 행을 식별하기 위해 고유식별자를 정의 ○ 고유 식별자는 Not Null이며 Null 허용X ○ Unique 속성 ○ PK(Primary Key)는 테이블 등록시 명시해야함 ○ ID가 PK로 선언되지 않았으면 번호들이 중복으로 들어가는 것이 허용됨 ○ ID가 PK로 선언되면 .. 2023. 10. 8.