[정보처리기사] 데이터베이스의 개념, ER 다이어그램, 1:1 , N :1 , N:M의 관계에 대한 분석, ERD 표기법
[정보처리기사] 데이터베이스의 개념
[정보처리기사] 데이터베이스의 개념
다수의 인원, 시스템 또는 프로그램이
사용할 목적으로 통합하여 관리하는 데이터의 집합
데이터베이스 종류
계층형 데이터베이스
망형 데이터베이스
관계형 데이터베이스
데이터베이스 관리시스템 특징
무결성
일관성
회복성
보안성
효율성
[정보처리기사] ER 다이어그램
[정보처리기사] ER 다이어그램
[정보처리기사] 1:1 , N :1 , N:M 의 관계에 대한 분석
[정보처리기사] 1:1 , N :1 , N:M 의 관계에 대한 분석
1:1 (One-to-One)
이 관계는 한 개체가 다른 한 개체와만 관련이 있을 때 발생합니다. 예를 들어, 사람과 주민등록번호의 관계는 1:1입니다. 각 사람은 고유한 주민등록번호를 가지며,
각 주민등록번호도 하나의 사람에게만 속합니다.
Person <----> NationalID
Java Entity:
@Entity
public class Person {
@Id
private Long id;
private String name;
@OneToOne(mappedBy = "person")
private NationalID nationalID;
}
@Entity
public class NationalID {
@Id
private Long id;
private String number;
@OneToOne
@JoinColumn(name = "person_id")
private Person person;
}
SQL:
CREATE TABLE Person (
ID INT PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE NationalID (
ID INT PRIMARY KEY,
NUMBER VARCHAR(20),
PERSON_ID INT,
FOREIGN KEY (PERSON_ID) REFERENCES Person(ID)
);
1:N
1:N (One-to-Many)
이 관계는 한 개체가 여러 개체와 연결될 수 있을 때
발생합니다. 예를 들어, 부모와 자식의 관계는 일반적으로 1:N입니다. 하나의 부모(개체)가 여러 자식(개체)을 가질 수 있습니다.
Parent <----> Childs[Child_0, Child_1,...]
하나의 출판사와 여러 권의 책 사이의 관계를 생각해 볼 수 있습니다. 하나의 출판사는 여러 권의 책을 출판할 수 있지만, 각각의 책은 특정 시점에서 하나의 출판사에 의해서만 출판됩니다. 따라서 이는 1:N 관계입니다.
출판사A
└─ 책1
└─ 책2
└─ 책3
출판사B
└─ 책4
└─ 책5
Java Entity:
@Entity
public class Parent {
@Id
private Long id;
private String name;
@OneToMany(mappedBy = "parent")
private List<Child> childs;
}
@Entity
public class Child {
@Id
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="PARENT_ID")
private Parent parent;
}
SQL:
CREATE TABLE Parent (
ID INT PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE Child (
ID INT PRIMARY KEY,
NAME VARCHAR(20),
PARENT_ID INT,
FOREIGN KEY (PARENT_ID) REFERENCES Parent(ID)
);
N:M (Many-to-Many)
이 관계는 여러 개체가 다른 여러 개체와 연결될 수 있을 때 발생합니다. 예를 들어 학생과 과목 간의 관계는 N:M입니다. 하나의 학생은 여러 과목을 수강할 수 있고, 하나의 과목도 여러 학생들에게 가르쳐질 수 있습니다.
학생과 과목 사이의 관계를 생각해볼 수 있습니다. 한 학생은 여러 과목을 수강할 수 있고, 한 과목도 여러 학생에게 가르쳐질 수 있습니다. 이 경우 양쪽 모두가 '다수'와 연결될 가능성이 있으므로, 이는 N:M 관계입니다.
학생A
├─ 과목1
├─ 과목2
학생B
├─ 과목2
├─ 과목3
과목2
├─ 학생A
├─ 학생B
과목3
└─ 학생B
Students[Student_0, Student_1,...] <----> Subjects[Subject_0, Subject_1,...]
Java Entity:
@Entity
public class Student {
@Id
private Long id;
private String name;
@ManyToMany
@JoinTable(name = "student_subject", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "subject_id"))
private List<Subject> subjects;
}
@Entity
public class Subject {
@Id
private Long id;
private String name;
@ManyToMany(mappedBy="subjects")
private List<Student> students;
}
SQL:
CREATE TABLE Student (
ID INT PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE Subject (
ID INT PRIMARY KEY,
NAME VARCHAR(20)
);
CREATE TABLE STUDENT_SUBJECT (
STUDENT_ID INT,
SUBJECT_ID INT,
PRIMARY KEY (STUDENT_ID, SUBJECT_ID),
FOREIGN KEY (STUDENT_ID) REFERENCES Student(ID),
FOREIGN KEY (SUBJECT_ID) REFERENCES Subject(ID)
);
[정보처리기사] ERD 표기법
[정보처리기사] ERD 표기법
정보공학 표기법
[정보처리기사] ERD 최적화
[정보처리기사] ERD 최적화
ERD 최적화
논리모델은
한글로 표기를 하고,
물리모델은
영어로 다 표기한다.
# 관계형 모델형 테이블 표를 한분에 확인하는 방법
'컴퓨터공부 > 정보처리기사' 카테고리의 다른 글
정보처리기사 실기 인터페이스 문제 (0) | 2024.01.01 |
---|---|
정보처리기사 실기 인터페이스 문제 (0) | 2024.01.01 |
[정보처리기사] C언어 문제 펑션으로 받아서 출력값문제, FiFO, LRU , 프로세스 관리, 스케줄링 윈도 리눅스 Unix 명령어 정리 (0) | 2023.10.06 |
[정보처리기사] C언어 홀수 문제 , C언어 포인터 변수 문제 , C언어 for문 문제, java for문, java 2중 for문 (0) | 2023.10.06 |
댓글