2015년 1월 2일 금요일

php 간단 일기장 - DB 테이블 실제 생성

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - DB 테이블 실제 생성

컬럼명 짓기
[일기장] : [페이지], [내용], [글 쓴 날짜] 를 영어로 바꿔보면
diary, page, contents, write date 가 된다.

이때 Page는 각 [내용, 글 쓴 날짜] 를 구분해주는 ID 이므로,
diary_id 라고 이름붙인다.

contents 는 그냥 그대로 contents 라고 이름붙이면 된다.

Write Date도 그냥 사용하고 싶지만 데이터베이스의 컬럼은 띄어쓰기를 허용하지 않는다.
따라서 띄어쓰기 대신 _ 를 붙여서 write_date 라고 이름붙인다.


컬럼 타입
diary_id 는 유일한 숫자여야 한다.
또한 사용자가 직접 관리할 필요가 없이 하나의 contents 와 write_date 가 추가될 때마다 페이지 장 수가 늘어나면 된다.

contents 는 사용자가 글자를 입력하는 부분이므로 글자 형이다.
다만 우리는 간단한 일기장을 만들 것이기 때문에 500글자까지만 입력할 수 있다고 가정하자.

write_date 는 말 그대로 '날짜' 를 나타내기 때문에 '날짜' 형이다.


null
null 은 '값이 없다' 라는 의미이다. 따라서 allow null 이라고 하면 '값이 없을 수 있다' 라는 의미가 된다.

diary 테이블에서는 diary_id, contents, write_date 는 셋 다 필수적으로 있어야 한다.
따라서 not null 이 된다.



기본값

일반적으로 RDBMS 는 값이 입력될 때 아무것도 입력되지 않으면 '기본으로 설정해둔 값을 넣어라' 라고 설정할 수 있다.

diary_id 의 경우 유일한 값이며 자동으로 늘어난다.
RDBMS 는 이렇게 다른 행과 구별하는 id 의 경우 많이 사용하기 때문에 특별한 기능을 넣었다.
그것이 auto increasement 이다.

일기장의 특정 페이지를 찾기 위해서는 '색인'을 만들어놓고 찾아보면 쉽다.
즉 목차를 미리 만들어서 이 내용이 여기 있구나.. 라고 미리 마킹해 두는 것이다.
이렇게 미리 색인을 만들어서 찾아보기 쉽게 만든 것을 인덱스라고 한다.
 Primary key 라는 것은 인덱스의 종류로써, contents 와 write_date 를 지정하는 대표 값을 뜻한다.

write_date 의 경우 굳이 사용자가 입력할 필요 없이 실제로 저장된 시간이 입력되면 된다.

따라서 사용자가 직접 입력해야 하는 부분은 contents 뿐이다.


실제 컬럼 (필드) 생성
phpmyadmin -> 왼쪽 phpdiary 클릭 -> 구조 -> 새로운 테이블 ->
이름 : diary
Number of Fields : 3






실제 컬럼 (필드) 정의 입력
필드 1 - 이름 : diary_id
필드1 - 종류 : int
필드1 - 인덱스 : primary
필드1 - AUTO_INCREMENT : 체크

필드2 - 이름 : contents
필드2 - 종류 : varchar
필드2 - 길이 : 500

필드3 - 이름 : write_date
필드3 - 종류 : TIMESTAMP
필드3 - 기본값 : CURRENT_TIMESTAMP

저장 버튼 클릭

실제로 데이터베이스에서는 날짜를 지정하는 타입이 TIMESTAMP 외에도 date, datetime 등 여러가지가 있다.
다만 mysql 에서는 '자동으로 현재시간'을 지정하기 위해서는 TIMESTAMP 형이어야 한다는 제약이 있다.
따라서 write_date 는 TIMESTAMP 형으로 지정한다.


DML

CREATE TABLE `phpdiary`.`diary` (
`diary_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`contents` VARCHAR( 500 ) NOT NULL ,
`write_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM ;

이런 메세지가 나온다. 이것은 GUI 로 실행한 것을 텍스트로 실행했을 경우 이런 명령어로 실행하면 된다는 의미이다.

댓글 없음:

댓글 쓰기