구이제이 2024. 2. 2. 17:36

참고도서




RDBMS(관계형 데이터베이스)






속성,column,feild, (속성의 수 /디그리/차수)

 

튜플 row record (튜플의수 = 카디널리티/기수)

 

전체적인 것 스키마

전체를 인스턴스

 

도메인이란? 속성이 가질수있는 값의 범위 : 도메인

ex)학년 1~3, 1,2,3만 가질수잇다. 이것이 외에 가질수없다.



-

릴레이션의 특징

-단일 값을 가진다.(도메인은 단일값 같은말)

 

제1 정규화, (2개로된거 쪼개는것)




-키

기본키PK (후보키중 하나를 선정하여 대표로 삼는 키) null 안됨, 중복 안됨

외래키FK 



연쇄적으로 실행된다.



p90






관계대수 : 수학(코드가 만들었다.)

 

sql문

 

실행할때,





구조정의

 




양쪽에 2개 에 있는 것 하나만 추출하고

하나만 있는 것은 전부 추출하여

전부추출하는것이다.

그래서 속성의 순서와 도메인이 같아야 한다.






 

첫번째에만 있고 두번쨰에는 없는 것빼버리는 것.

ex)



 

열은 더하고행은 곱한다.

p109

 

110p

기호를 알아야한다.★★★ 해석을 한다.

문제풀이







p313

 

★★★순서암기(요-설-(개논물)-데)

모델링(=설계)

 

요구사항 수집 및 분석 : 최대한 많이 데이터를 모은다. 




개념적 모델링 : 최대한 많은 데이터 중에서 뽑아낸다 - 이것이 개념적 모델링.(추상화를 한다)

ERD(객체관계다이어그램) - 개략적인것만 써놓는다.

(개략-핵심,전체뼈대)

논리적 모델링 : 머리속에 개념을 잡고, 논리적으로 정리

(구체화) RDBMS, 정규화(테이블 문제없이 나누는 작업)

물리적 모델링 : 컴퓨터에 구조를 잡는다.

(역정규화 (정규화의반대)













p317

 

ERD 관계도 그리기, 순서도(흐름)




p318




p319





p321



p323

 

p327 그림만



 

관계설정만 할줄알면된다. 1진인지 뭐 그런것까지 몰라도댄다.



o<이거 합친거 뭐에요?





p389

 

ERD(1개를 2개로 나누눈작업을, 정규화라한다.. 나누기어렵다)

3가지특징이 있어야 한다.

1)삽입이상

  • 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상 

Null값 문제

2)삭제이상

  • 투플 삭제시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상

(하나만 지우고 싶었는데, 다른것까지지워지는 경우)

 

3)수정(갱신)이상(업데이트)

  • 투플 수정시 중복된 데이터의 일부만 수정되어 데이터들의 불칠치 문제가 일어남

불일치문제 발생, 데이터의 무결성이 깨진다.




‘이상현상’이라는 문제점이 생기고, 없애려고 ‘정규화’ 라는 것이 생긴다.

나눌만한 특별한 이유가 있어야한다.

 

#원인이 있기때문에, 결과가 있다.

불편함점이 있기때문에, 나누게 된다.



 

p403

★어렵다

 

그림을 알아라.

 

A -> B

A를 B의 결정자

B를 A의 종속자

 

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●



클래스가 하나의 테이블이다.

 

1.DB

2.테이블

3.삽입

4.관계설정




새로쓰기







/*

DDL(데이터 정의어) : 정의어  create(생성) alter(변경) drop(삭제) 

DML(데이터 조작어) : insert(삽입) delete(삭제) update(갱신) select(검색)

DCL(데이터 제어어) : revoke(권한회수) grant(권한설정)

TCL - rollback(트랜잭션 되돌리기), commit(트랜잭션 완료) 

 

데이터베이스 구축

요구사항 수집/ 분석 - > 설계(개념모델링,논리적모델링,물리적모델링), 데이터베이스 구축

 

비절차적언어(내가만드는대로 만들어진다)

*/

 

-- 1. 데이터베이스 생성

drop database if exists prod_db; -- 만약  prod_DB가 있으면 삭제하라

create database prod_db; -- prod_db(데이터베이스 생성)

show databases; -- 데이터베이스가 생성됫는지 확인하는 문법('s'자 붙여야한다.)

show tables; -- 테이블 보고싶다면 tables ('s'자 붙여야한다.)

 

-- 2. db을 사용한다(열기)

use prod_db; -- prod_db 안에서 작업하겠다.



-- 3. 테이블 생성 : order 테이블 생성

 

/*

-- 잘못된 생성의 예) : 부모가 없는데, 참조한다고 한다.

create table orderTBL(

orderid int primary key not null, -- 제약조건

dateOrder date null,

pcode char(10), -- 생략하면 null값 허용 한다는 뜻

custid char(10),

amount int not null,

-- 외래키 설정 참조하는 키 참조되는_테이블명(컬럼명)

foreign key (pcode) references productTBL(pcode)  -- productTBL(pcode) 부모를 생성도 안했는데, 참조한다고 하는 경우이다.

-- 마지막은 ,(콤마) 안찍는다.

 

); -- 대소문자 구분하지 않는다.

 

*/

 

-- drop table orderTBL;

drop table if exists orderTBL; -- 있으면 삭제, 없다면 아무 실행 안한다. 

 

create table orderTBL(

orderid int primary key not null, -- 제약조건

dateOrder date null,

pcode char(10), -- 생략하면 null값 허용 한다는 뜻

custid char(10),

amount int not null

 

);

 

-- 테이블 내용 확인

select orderid, dateOrder, pcode, custid, amount from orderTBL;

select * from orderTBL; -- 모든 테이블 다 보여달라



-- 4. product 테이블생성

create table productTBL(

pcode char(10) not null primary key,

    pname varchar(100) not null,

    price int not null,

    region varchar(100) not null

);

 

select * from productTBL;

-- insert into 테이블명(컬럼명,.....) values(값1, ...);

insert into productTBL(pcode, pname, price, region) values("ba123","바나나",2300,"필리핀");

-- 홑따옴표, 쌍따옴표 둘중하나로 통일해서 값을 집어넣는것이 좋다.

insert into productTBL values("ba123", "사과",1000,"대구"); -- 실행하면 오류가 떨어진다 : 프라이머리키로 사용했다. 중복안된다.,null 안된다. : 안된다.

insert into productTBL values("ba231", "사과",1000,"대구"); -- 기본키는 중복되면 안된다. 그래서 바꿔준다. -> ba123 > ba231 : 된다.

insert into productTBL values("or321", null,1000,"대구"); -- not null( pname varchar(100) not null,)로 잡았다. : 안된다.

insert into productTBL values("or321",1000,"대구"); -- 컬럼수가 4개가 들어가야되는데 3개만써서 안된다. : 안된다.

insert into productTBL values("or321","오렌지",1000,"대구"); -- 컬럼수가 4개가 들어가야되는데 3개만써서 안된다. : 된다.

 

-- 개체무결성, 참조 무결성

-- 만들떄 부모를 먼저 만들고 그 다음에 자식

-- 지울때 자식먼저 지우고 그 다음에 부모