일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링
- html5
- jQuery
- 웹개발
- 서블릿
- MVC
- css3
- Linked List
- spring
- Binding
- jsp
- 네비게이터
- 웹페이지
- 프레임워크
- mybatis
- javascript
- Ajax
- 회원가입
- 풀스택
- c programming
- 미로 생성 알고리즘
- 웹서비스
- 백엔드
- 제이쿼리
- 프론트엔드
- dbms
- 비밀번호찾기
- 마이바티스
- 오라클
- 로그인
- Today
- Total
목록dbms (6)
Programmer's Progress

게시글 수정 구현 방법과 관련된 내용을 소개하기 전에 앞서 게시글 수정을 구현하는 것이 얼마나 복잡하고, 어려운 것인지를 설명해야 할 것 같다. 먼저 게시글을 수정하기에 앞서, 수정해야 할 게시글의 제목, 내용, 이미지 등등을 백엔드 서버에 요청해야 할 것이다. 이때 JQuery의 AJAX기능을 활용해 비동기식으로 요청한다. 게시글의 제목이나 내용 자체는 DB에 저장된 내용을 SQL Mapping방식인 MyBatis프레임워크를 이용해 얻어오기만 하면 되므로 간단하다. 그런데 이미지는 이미지 자체를 DB에 저장한 것이 아니라, 서버 컴퓨터의 D:드라이브에 저장되어있고 DB에는 해당 게시글의 번호, 원본 이미지 이름, 난수 이름만을 저장하고 있다. 아래의 릴레이션 스키마를 확인해보자. 하나의 게시글은 여러 ..

게시글 삭제 구현 과정을 설명하기 전에 짚고 넘어가야 할 것이 있다. 먼저 기존의 코드 중에서 새로운 게시글, 메시지 번호를 얻는 방법을 변경하였음을 밝힌다. 기존 방식은 이렇다. SELECT NVL(MAX(article_id),0)+1 FROM free_board와 같이 현재 존재하는 게시글들 중에서 가장 게시글 번호가 큰 게시글의 번호 + 1을 새로운 게시글에 할당한다. 이 방식에는 큰 문제가 있었다. 1. 현재 게시글 목록에 번호가 1, 2, 3인 게시글들이 있고 각각 서로 다른 탭에서 참조하고 있다고 가정하자. 2. 첫 번째 탭에서 3번 게시글을 삭제하고, 다시 새로 게시글을 작성한다. 3. 두 번째 탭에서 기존 3번 게시글을 삭제하려고 하면, 이미 삭제된 게시글이 아닌, 2번 과정에서 작성한 새..

본격적으로 백엔드 개발을 공부하기 시작하면서 상당히 많은 SQL문을 작성했었다. 가령 회원의 목록을 질의하는 것부터, 회원 추가, 삭제, 수정, 계층형 게시판, 답글 등등 심지어는 3중 SELECT문을 활용하기도 했었다. 그 외에도 여러 SQL문을 한 번에 수행해야 할 때도 있었다. 가령, 게시판에 새로운 글을 추가할 때에는 반드시 현존하는 게시글중에서 가장 큰 번호를 가진 게시글의 번호보다+1된 값을 새 게시글의 번호로 사용해야 할 때가 있었다. 그런데 만약 우연하게도 동시에 두 사용자가 게시글 작성을 했다면 어떻게 될까? 물론 단일 SQL 질의에 대해서는 DBMS가 동시성제어를 통해 마치 OS에서 프로세스 간의 공유 자원을 동기화하기 위해 세마포어나 락을 사용하듯, DBMS도 마찬가지로 ACID의 원..

이번에는 사용자끼리 메시지를 주고받을 수 있도록 메시지 기능을 추가할 것이다. 메시지 기능을 추가하기에 앞서 먼저 메시지에 대한 스키마 다이어그램을 소개하자면 보는 것과 같이 송신함과 수신함을 위한 테이블을 따로 구성하였는데 이는 메시지를 보낸 사람이 해당 메시지를 자신의 송신함에서 지우더라도, 즉 송신 기록을 제거하더라도 수신자에게는 그대로 해당 메시지가 남아있을 수 있도록 하기 위함이다. 물론, 송신 메시지인지, 수신 메시지인지 구분하는 값을 더 추가한다면 하나의 테이블로도 처리가 가능하긴 하지만, 하나의 릴레이션이 너무 커지면 데이터 접근 속도도 그렇고 여러 가지 면에서 상당히 불리한 점이 많기 때문에, 일부러 분할하여 처리하였다. 메시지의 기본키는 SYS_GUID( ) 함수를 이용하여 16바이트의..

이전에는 간단하게 로그인, 회원가입, 아이디 비밀번호 찾기 등등 기본적인 웹페이지 화면을 구성하였다. 아무래도 HTML, CSS, JavsScript, JQuery 등등을 사용하면서 좀 완성도 있게 구현해보자 노력했더니 웹 디자인 및 퍼블리싱에도 시간이 상당히 오래 걸렸다. 정확히 말하면 구현하는 데에 많은 시간이 소요된 것이 아니라, 어떤 식으로 꾸밀까... 에 너무 집중한 나머지 여러 웹페이지들의 레이아웃을 참고하면서 나름대로 그림도 그려보고 하다 보니 시간이 오래 걸렸다. 그렇게 해서 어느 정도 웹페이지의 콘셉트를 잡고 난 이후에 본격적으로 웹페이지 구조를 구성하기 시작했다. 전체적인 웹 서비스의 메인, 로그인, 회원가입, 아이디/비밀번호 찾기 화면의 모습이다. 나름대로 웹페이지 레이아웃과 CSS을..

데이터베이스는 여러 의미 있는 값을 지닌 기록들인 데이터를 관련 있게 모아놓은 것을 말한다고 한다. 데이터베이스를 배우기 전까지는 나는 파일의 형태로밖에 데이터를 다루지 못했다. 가령 성적을 입력하면 평점과 이수 학점을 보기좋게 계산해서 DOS창에 일일이 수작업으로 GUI를 구성하여 출력하는 C 프로그램을 제작했던 경험이 있는데, 이 프로그램의 문제는. txt 파일의 형태로 데이터를 기록하다 보니 당연히 띄어쓰기가 잘못되거나, 파일의 경로가 달라지거나, 이름이 같은 사람에 대해서는 서비스를 제공할 수 없다거나... 데이터를 체계적으로 관리할 수 없었다는 것이었다. 때문에 프로그램의 규모가 상당히 작아질 수밖에 없었다. 그러나, 데이터베이스와 DBMS에 대한 공부를 하면서 이제 실전에 적용할 수 있겠다는 ..