분류 전체보기
-
-
식별자 비식별자Study/데이터베이스 | DB 2021. 5. 27. 22:00
식별자관계 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우 Null값이 오면 안되므로 반 드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우 비식별자관계 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하 는 경우 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우 엔터티별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우 테이블 설계시 인덱스와 관련된 설명 식별자 관계만을 사용하였을 경우 : 기본키 속성의 숫자가 증가하여 SQL구문이 복잡해진다. 비식별자 관계만을 사용하였을 경우 : 테이블 간의 과다한 조인을 유발하여 조인에 의한 성능 저하가 발생한다.
-
정규화란 ? / 정규화 절차Study/데이터베이스 | DB 2021. 5. 25. 23:11
정규화 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법 데이터를 분해하는 과정 데이터중복을 제거하고, 데이터 모델의 독립성을 확보하기 위한 방법 실직적으로 제 3정규화까지만 수행 정규화를 수행하지 않아, 불필요한 값이 추가되거나, 입력할수 없는 현상을 이상현상(Anomarly)라고 함 정규화 절차 정규화 절차 설명 제1정규화 -속성(Attribute)의 원자성을 확보 -기본키(Primary)를 설정 제2정규화 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해) 제3정규화 -기본키를 제외한 칼럼 간에 종속성을 제거 -이행 함수 종속성 제거 BCNF 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해 제4정규화 여러 칼럼들이 하나릐..
-
속성(Attribute)의 종류Study/데이터베이스 | DB 2021. 5. 22. 01:25
1. 분해 여부에 따른 속성의 종류 종류 설명 단일 속성 하나의 의미로 구성된 것으로 회원ID, 이름 복합 속성 - 여러 개의 으미가 있는 것으로 대표적으로 주소 - 주소는 시, 군, 동 등으로 분해 가능 다중값 속성 - 속성에 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품LIST - 다중값 속성은 엔터티로 분해됨. 2. 특성 따른 속성의 종류 종류 설명 기본 속성 - 비즈니스 프로세스에서 도출되는 본래의 속성. - 회원ID, 이름, 계좌번호, 주문 일자 등 설계 속성 - 데이터 모델링 과정에서 발생되는 속성 - 유일한 값을 부여 - 상품코드, 지점 코드 등 파생 속성 - 다른 속성에 의해서 만들어지는 속성 - 합계, 평균 등
-
키의 종류Study/데이터베이스 | DB 2021. 5. 21. 00:19
데이터베이스 키 설명 기본키 (Primary Key) 후보키 중에서 엔터티를 대표할 수 있는 키 후보키(Candidate Key) 후보키는 유일성과 최소성을 만족하는 키 슈퍼키(Super Key) 슈퍼키는 유일성은 만족하나, 최소성을 만족하지 않는 키 대체키(Alternate Key) 대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키 외래키(Froeign Key) -하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조무결성(Referential Integrity)을 확인하기 위해 사용되는 키 -즉, 허용된 데이터 값만 데이터베이스 저장하기 위해 사용. 키(Key) 중 가장 근본이 되는 키는 기본키(PK)이다. 후보키와 슈퍼키의 차이점은 슈퍼키는 최소성을 만족하지 않는다는 점이다.
-
count(*) 과 count(1)Study/데이터베이스 | DB 2021. 4. 28. 23:14
DB에서 count(*)과 count(1)를 혼용하면서 둘의 차이점이 있는지 궁금한 분들이 있을 것이다. 결론은 '차이가 없다'이다. -간혹 몇몇 DBMS마다 다르다는 말도 있지만, 결론적으로는 두 함수는 같은 결괏값을 도출해냅니다. - 단 count(칼럼명)일 경우에는 해당 칼럼에 NULL을 제외한 칼럼의 수를 세게 됩니다. CREATE TABLE sql_test_a ( ID VARCHAR2(4000 BYTE), FIRST_NAME VARCHAR2(200 BYTE), LAST_NAME VARCHAR2(200 BYTE) ); CREATE TABLE sql_test_b ( ID VARCHAR2(4000 BYTE) ); INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME..