개요- 워드프레스 기반, 구조화된 정보정의.

   
 

본 글은 관계형 데이터베이스에서 테이블을 생성하고, 테이블사이의 관계를 형성하는 것과 유사하게 워드프레스 기반으로 구조화된 정보정의를 구축하기 위한 실전적 방법을 정리한다. 

 

 

 

 

구조화된 정보  - Structured Information.

 

- 본 글에서 구조화된 정보란, 취급해야할 대상의 정보요소들이 2개 이상이면서 이들 정보요소들이 서로 연관되어 있어서 정보들의 연관을 시스템적으로 정의될 수 있어야 함을 의미한다. 즉 사람의 머리 속에만 이 요소와 저 요소가 연관되어있다 라는 식으로 관리하지 않고 데이터요소의 정의 단계에서부터 연관이 설정될 수 있게 함을 의미한다.

 

앞에서 언급한 "시스템적으로 정의 된다"에서 시스템이란 본 글에서는 워드프레스를 의미한다.

 

관계형 데이터 베이스를 예로 들면,

 

- 구조화된 정보 정의에 가장 잘 부합하는 상황은 관계형 데이터베이스에서의 테이블생성과 테이블사이의 관계형성 에 해당한다. 관계형 데이터베이스 설계할 때 핸들링 해야할 정보대상( 1개 정보요소가 아닌 여러 정보요소들이 서로 연관된 경우가 대부분이다) 에서 독립적인 정보그룹을 추출하여 이를 테이블로 정의하고 정보그룹들 간의 관계를 테이블간의 관계로 정의하게 된다.

 

웹으로 정보 표현.

데이터 요소들의 구조화된 정의가 이뤄진 것을 웹에 표현하기 위해서는 구조화된 정의와는 별개로 웹언어로 코딩하여 구축되어야 한다.

 

데이터베이스 + 코딩 으로 밑바닥 부터 시작하여 직접구현하는 방식으로는...하지말자.

 

위와 같이 구조화된 정보정의를 달성하고 웹에 표현을 위한 가장 원초적인 수단은 데이터베이스와 웹 언어(PHP, ASP, .net 등) + html 편집으로 이 3가지를 직접 모두 설계하고 구현하는 방식이다. 방법론상  흔하게 보게되는 "php로 게시판 만들기" 류에 해당한다. 이 방식의 장점은 데이터 베이스를 개발자의 의도대로 완전히 임의 설계 가능하므로 정보정의 부분에서만은 완전히 자유롭고 원하는 정보 정의가 모두 가능하다. 그러나 문제는 이를 웹에 표현하는 부분까지도 완성도 높게 달성하려면 그 작업량이 방대해진다. 데이터베이스 테이블 설계, 구현 + 웹부분의 코딩 + 웹디자인 + 웹에서의 동적인 요소. 이 모든 것을 완성도 높게 하려면 최소한 3명의 전문가는 요구된다.

 

본 글에서는 1인 개발자 혼자라도 달성할 수 있는 수단을 찾고자 한다. 따라서, 이미 많은 부분에서 구축되어 있는 워드프레스에 관심이 가게된다.

 

워드프레스는 이미 준비된 골격이 있다.

 

위의 구조화된 정보정의와 웹표현에 있어서, 워드프레스는 이미 기반 골격이 마련되어 있다. 특히 웹표현 부분은 이미 잘 만들어진 상태라고 보면 된다. 필요한 추가 기능적 요소는 플러그인이나 테마로 너무 쉽게 해결할 수 있다. 워드프레스 가 이미 데이터베이스 + php 로 구축되어있어서 앞에서 말했던 "데이터베이스 + 코딩" 형식으로 되어있다. 그러나, 워드프레스에서의 데이터베이스는 이미 그 골격이 워드프레스 체계로 되어있기 때문에 자유롭게 데이터베이스에 테이블을 추가하고 관계형성 해봤자 워드프레스에서 표현되지 못한다.

 

워드프레스를 이용하여 구조화된 정보표현을 위해서는 이미 구축되어있는 워드프레스 골격을 이용하면서 구축해야한다.

 

그러나, 워드프레스 설치하고 나면 핸들링 가능한 정보형식이라고는 포스트, 페이지, 그리고 포스트에 연결된 카테고리와 태그가 전부이다.

참고정보 : 기본 설치된 포스트와 페이지 개념 이해하기 -> http://igotit.tistory.com/62

 

기본 설치된 것의 정보정의가 워드프레스의 전부라면 구조화된 정보 정의는 불가능하다(데이터베이스의 테이블과 관계형성 같은 것이 안된다는 의미.).  

 

그러나, 다행히도 워드프레스의 체계내에서 사용자가 직접 핸들링 가능한 부분이 있다.

 

예1 : 사용자 정의 포스트 만들기 -> http://igotit.tistory.com/75

예2 : 사용자 정의 필드 -> http://igotit.tistory.com/70

 

상기 예와 같은 사용자 정의 포스트(custom post)와 사용자 정의 필드(custom field) 를 활용하면 완전하지는 않아도 적절히 구조화된 정보 정의가 가능하다. 이는 데이터베이스에서 테이블을 생성하고 관계를 만드는 것에 준한다. 

 

 

포스트간의 관계는 왜 만드는가?

 

예로 "제품" 를 전담하는 포스트가 있고, 제품의 "사용자 설명서" 만을 전담하는 포스트가 있다고 치자.

2개의 포스트는 개별적인 정보들이다. 웹에서 보일 때도 제품리스팅을 하면 제품만 보이고 설명서 리스팅을 하면 제품설명서만 보인다.

특정 제품 1개의 페이지를 볼 때 제품 설명서가 "자동" 으로 연결되지도 않는다. 포스트 수준에서 관계를 만들지 않은 상태에서 2개 포스트 간의 연결고리는 각각의 포스트의 내용 편집에서 수동으로 링크를 걸어줘야 한다. 웹편집자가 항상  수행  규칙을 잊지 않고 수동처리 해야 한다. 동시에 제품 설명서에도 이 제품설명서가 어떤 제품의 설명서인지를 수동으로 링크 처리해줘야한다. 이와 같은 수동처리가 단지 달랑 2개의 포스트 사이에서만 이뤄지는 경우엔 수동으로 처리해도 못 할 정도는 아니다. 그러나, 현실적으로 구조화된 데이터 모델링이 필요한 대상은 그 관계를 형성해야 할 것이 수십개 이상 나오게 된다. 이들 각각에 대한 정보의 연결을 웹편집에서 사람이 수작업으로 연결시킨다는 것은 너무나 비효율적이다.

 

정상적이고 효율적인 처리방식은, 포스트간의 관계가 저장되어있어야 하며 이들 간의 관계를 코드에서 접근가능하게 하여 웹에 표현하는 부분에서 연결된 것을 보이는 코드에서 자동화 하여 처리될 수 있게 해야한다.

 

 

 


 

1. 개념 명확화. 워드프레스 커스텀 포스트와 DB 테이블

   
 

앞에서 "구조화된 정보"라는 표현을 사용하고 있는데, 이 말의 좀더 명확한 의미를 정의한다.

 

구조화된 정보 ?

1. 관계형 데이터베이스에서의 표현으로 하면 Entity(테이블)정의하고 이들의 Relationship(관계) 형성을 의미. 

2. 워드프레스에서는 포스트(사용자 정의 포스트) 가 테이블에 대응되며, 포스트를 정의하고 포스트들 사이의 관계를 형성하는 것이 워드프레스에서의 구조화된 정보정의에 해당한다.

 

워드프레스에서의 포스트와 데이터 베이스(DB)에서의 테이블.

1. 개념적으로 워드프레스에서의 포스트는 DB에서 테이블에 해당한다. 

2. 워드프레스에서 사용자 정의 포스트(Custom Post)를 만든 것은 DB에 새로운 테이블을 만든 것에 해당한다. 

3. 워드프레스에서 포스트에 새글 1개를 만든 것은 DB 테이블에 레코드 1개가 추가된 것에 해당한다.

4. 포스트에 새글 마다 발급 되는 '포스트 아이디'는 DB 테이블의 키 값에 해당한다.

5. 워드프레스에서 포스트에 사용자 정의 필드를 추가한 것은 DB 테이블에 필드(컬럼이라고도 함)를 추가한 것과 동일하다.

 

위 각각을 실제 DB에서의 상황과 비교하면서 좀더 상세하게 설명한다.

 

DB에서 제품 정보를 다루기 위해서 T_Product라는 테이블을 아래 그림 처럼 생성했다.(MS SQL Server 2008 을 예로 보이나, MySQL이든 오라클이든 개념은 모두 동일함)

 

테이블 이름은 T_Product 로 했고, 필드(=컬럼)는 총 3개다. product_id는 각 레코드의 고유아이디를 기록하는 용도, product_name 에는 제품명, description 에는 제품설명을 기록할 의도다.

 

데이터베이스


Fig.1. DB에서의 테이블. (예: MS SQL Server 2008)  

 

한편, 워드프레스에서 제품정보를 별도로 다루기 위하여 사용자 정의 포스트를 만들었는데( 사용자 정의 포스트 만드는 법 -> http://igotit.tistory.com/75 ) 워드프레스 관리자 화면에서 보이는 모습은 아래와 같다. 

 

워드프레스에서 제품관리 목적의 사용자 정의 포스트에서도 제품명(새글제목)을 기록하는 부분과 제품설명(내용 편집부)을 기록하는 부분이있다.


 

워드프레스에서  제품관리 목적으로 만들어진 커스텀 포스트나 데이터베이스에서 생성한 테이블이나 데이터요소가 동일하다. 개념적으로 워드프레스의 포스트를 DB의 테이블과 등가로 생각해도 된다. 대응관계를 그림으로 표현하면 아래 그림과 같다.

 

 

DB의 테이블 - 워드프레스의 사용자 정의 포스트

DB테이블의 키 - 워드프레스의 포스트 아이디(새글 생성하면 자동으로 발급됨).

DB테이블의  product_name - 워드프레스의 제목

DB테이블의 description - 워드프레스의 내용.

 

워드프레스에서 포스트에 사용자 정의 필드를 추가할 수 있는데, 제품정보 중에서 "제품가격"을 사용자 정의 필드로 추가 했다고 하자.

이를 DB의 테이블에서는 T_Product 에 새로운 필드(컬럼)으로 제품가격을 추가한 것과 동일한 개념이다.

 

 

 

 

2. 문제 정의 - 워드프레스 커스텀 포스트를 DB 테이블처럼 다루기.

   
 

개념적으로 워드프레스의 커스텀 포스트가 데이터베이스의 테이블에 대응하긴 하는데, 활용상 유용하기 위해서는 아래 2가지 기능이 달성되어야만 한다.

 

1. DB에서의 테이블 생성 기능과 동일한 기능이 워드프레스 커스텀 포스트에서 요구된다.

1-1. DB에서 테이블을 임의로 원하는 만큼 생성할 수 있고,

1-2. 각 테이블의 데이터형 지정가능한 필드를 임의로 추가 가능하고, 

1-3. 각 레코드의 키(고유아이디)가 있어야 한다.

 

 문제는 따로 논의할 것도 없이 워드프레스에서 쉽게 구현됨.

 

워드프레스의 기본 골격수준에서 제공되고 있는 기능이다. 어렵지 않게 달성된다.

 

1-1. 워드프레스의 커스텀 포스트는 임의로 원하는 만큼 생성가능하며, 상기 1-1 만족.

커스텀 포스트 생성 방법 -> http://igotit.tistory.com/75

 

1-2. 각 커스텀 포스트에는 커스텀 필드를 추가할 수 있다. 상기 1-2 만족. 단, 자료형은 충분하지 않으나, 쓸 만큼은 된다.

커스텀 필드 기본(텍스트 자료형만 가능) -> http://igotit.tistory.com/70

커스텀 필드 고급 (플러그인 이용하면 다양한 자료형이 가능함) -> http://igotit.tistory.com/71

 

1-3. 각 커스텀 포스트는 고유 아이디가 자동생성된다. 상기 1-3만족.

 

2. DB에서 테이블 사이의 관계 형성하는 기능이 커스텀 포스트에서도 요구된다.

 

DB 테이블들 간에 관계 형성하는 것처럼 워드프레스 포스트끼리 관계 형성이 가능해야한다.

 

앞의 1번 문제와 달리 워드프레스에서 커스텀 포스트 간에 관계 형성하는 기능은 직접적으로는 제공되지 않는다. 이를 구현하기 위해서는 워드프레스 자체 기능으로는 불가능하다면 뭔가 더 추가되어야 한다.   

 

"포스트 사이의 관계만들기 개념."

워드프레스에서의 "포스트 간의 관계 만들기" 문제의 해결방법을 정리하기 전에,  먼저 "관계 만들기" 라는 것에 대한 개념을 사례를 들어 정리하고 가자. 

 

우리가 관리할 대상정보로 '제품' 이란 것이 있었고, 제품정보를 관리하기 위해서 위해서 테이블 1개를 준비했었다, 워드프레스에서는 제품정보 관리하기 위한 커스텀 포스트를 만들었다. 제품관련 정보로  제품이름, 제품설명이 전부였다. 이것 만으로는 제품과 관련 필요한 정보가 모두 관리되지 못하게된다. 상품가격이 대표적이다. 상품가격은 간단히 필드 하나 추가하고 가격을 기록하면 된다.

 

즉, 해당 제품에 완전히 종속된 정보는 필드 추가하는것으로 쉽게 해결된다. 워드프레스의 포스트나 DB의 테이블이나 동일함.

 

그러나, 제품 정보를 관리 하다보면 필드 추가로 해결되지 않는 경우가 있다. 그 대표적인 예가 "구매고객" 이다. 어떤 제품 1개를 어떤 고객이 구매하였는가라는 정보를 다뤄야 하는데, 이 정보를 다루기 위하여 제품 포스트(DB에서는 테이블)에 필드를 고객이라고 추가했다고 치자.

그리고 제품1을 홍길동이 구입했다고 하자, 제품1의 고객필드에 "홍길동" 기록했다 하자. 그런데 이번에 김말숙씨가 제품1을 구입했다. 김말숙씨가 구입한 기록을 홍길동을 지우고 기록하면 안된다. 홍길동, 김말숙 이라고 기록하는 방법도 있다. 그러나, 이렇게 하지 않는다. 우리는 기록이 중요한 것이 아니라 정보들의 구조적 연결을 달성해야한다. 저런 식으로 1개의 필드의 값에 "홍길동, 김말숙, 김말자, ..... " 기록하지 않는다. 상식밖의 짓이다. 

 

제품과 구매고객 정보를 다루기 위해서는 테이블을 분리해서 만들어야 한다. 워드프레스에서는 고객정보를 기록하고 관리할 커스텀포스트를 새롭게  만들어야 한다.

데이터 베이스인 경우에는 고객정보를 다루기 위하여, person 이라는 테이블을 만든 상황을 아래 보인다.

워드프레스인 경우에는 Person 이라는 커스텀 포스트를 만들면 된다.

Person의 필드에는 그 사람을 정의하는 정보요소들이 필드로 추가되면 된다. 이름,생일, 성별, 주소 등이 있을 것이다.  사람에게만 종속적인 정보들을 추가로 관리하고 싶은 경우 Person 테이블에 필드로 추가하면된다. 워드프레스에서는 포스트에 커스텀 필드를 추가한다.

 

 

이제 '제품' 과 '사람' 각각의 정보를 정리할 수 있는 틀은 마련되었다.  그러나 "어떤 제품을 어떤 사람이 구매했는가?" 에 대한 정보는 현재 만들어진 테이블 어디에도 없다. 즉, "제품과 사람의 관계" 는 아직 표현되지 못했다.

 

이제 "관계"라는 정보를 데이터베이스에서 어떻게 정의하는지 보자.   

 

데이터 베이스에서의 관계.

"고객이 주문한 제품 정보를 정의하는 T_Order 테이블이 필요하고, T_Order 의 필드에는 고객아이디와 제품아이디는 필수 기록되어야한다."

 

데이터베이스에서는 아래 그림과 같다. 왼쪽부분은 ER(Entity Relation)다이어그램으로 표현된 것이고, 오른쪽 부분은 각 테이블들에 있는 데이터 내용을 보이고 있다.


 

다이어그램에서의 T_Order 의 필드에는 person_id와 product_id 를 기록하고 있다.  T_Order 에 기록된 내용(위 그림에서오른쪽 하단 테이블)을 보면 1번 고객이 제품1과 제품2를 구매했고, 2번 고객이 제품1을 구매했다는 정보가 있다.

 

위의 예는 단순해 보이지만 이 같은 구조화된 "데이터 모델링"이 가능하기 때문에, 방대한 정보를 핸들링 하는 대규모 정보시스템도 구축가능하게 된다. 

 

워드프레스 체계 내에서, 골격을 깨지 않고도 위와 같은 구조화된 데이터모델링이 어렵지 않게 가능하다면, 기업형 ERP시스템에서도 사용 가능할 정도의 정보 시스템을 효율적으로 구축할 수 있을 것이다. 왜냐하면, 워드프레스에서는 데이터모델링을 제외하고는시스템 구축의 나머지 것들(수많은 개발자들이 만들고 배포중인 각종 다양한 기능의 플러그인이라든지, 디자인적인 요소등)이 워낙 방대하게 제공되므로, 시스템 개발을 위한 인적 구성이 훨씬 간소해지기 때문이다.

 

 

워드프레스에서 구현하고자하는것 요점.

 

바로 위 데이터베이스에서의 관계 형성하는 것이 워드프레스 체계 내에서 가능하게 하고자 한다. 

 

이후 내용에서 워드프레스에서 포스트 간의 관계를 핸들링 하는 방법을 구체적으로 정리한다.

 

관계 타입은 아래 3가지 중의 하나이다.

 

1:1  관계.

1:다 관계.

다:다 관계.

 

이후 관계타입별로  1챕터식 할당하여 정리함.

 

 

 

 

3. 1:1 관계 - 워드프레스에서 포스트간의 관계 구현.

   
 

2개의 포스트 사이의 1:1 관계 만들기. 

 

1:1 관계 예 : "제품" 를 전담하는 포스트가 있고, 제품의 "사용자 설명서" 만을 전담하는 포스트가 있는데 제품의 포스트는 제품마다 1개씩만 만들어지는 경우라고 가정한다. 

 

참고 : 제품의 사용자 설명서가 제품1개 마다 pdf "파일" 1개 혹은 이미지 "파일"1개만  구성되는 경우에는 제품의 "사용자 설명서"를 별도로 담당하는 커스텀 포스트를 만들 필요없다. 이런 경우에는 제품 담당 커스텀 포스터에 파일 등록가능한 '사용자 정의 필드' 를 만드는것이 타당하다. 본 상황은 예를 들기 위하여 도입된 것이다. 제품설명서를 전담하는 커스텀 포스트로 만들어졌고 이 포스트에 제품설명서를 기록하도록 되어있다고 가정한다.

 

커스텀 필드로 관계 정의한다.

 

포스트 사이의 관계가 1:1 인 경우는 커스텀 필드만으로도 쉽게 관계를 정의할 수 있다. 1:1 이라는 속성 때문이다. 원래 커스텀 필드가 어떤 포스트의 추가 정보를 정의하기 위한 수단이었기 때문에 커스텀 필드 자체가 1:1 관계 표현용으로 적합한 워드프레스에서 기본 구비된 수단이다.

 

데이터베이스의 테이블로 구현한다면, 아래와 붉은색 박스내부와 같은 개념이다. T_Manual 테이블에 product_id 라는 필드가 있고 이 필드에 제품 아이디를 추가하여 제품과 메뉴얼 사이의 관계를 만든다. 

 

 

워드프레스 1:1 관계 구현.

 

워드프레스에서는 제품정보 기록하는 커스텀 포스트와 매뉴얼용 커스텀 포스트 2개를 각각 만들고 매뉴얼용 커스텀포스트에 사용자 정의 필드를 추가하여 그 값은 제품정보 포스트에서의 해당 제품의 포스트 아이디를 기록한다.

 

커스텀 포스트 만들기 -> http://igotit.tistory.com/75 와 커스텀 필드 만드는 방법 http://igotit.tistory.com/70 이 있으나, 이는 수동으로 만드는 방법이라 다소 번잡스럽다. 포스트와 필드 생성하는 플러그인을 이용하면 좀더 편하게 생성가능하다.플러그인 예 -> http://igotit.tistory.com/71

 

코드에서의 관계 활용.

 

위와 같이 워드프레스에서 포스트를 2개 만들고 그 들  사이의 1:1관계를 만든 경우 각각의 포스트를 표현하는 템플릿 파일도 별도로 만들게 된다. 템플릿파일에서 우리가 설정한 필드 정보에 접근가능하기 때문에 코드로 자동화 처리가 가능해진다.

코딩방식예 : 제품 포스트를 표현하는 템플릿 코드에서 매뉴얼 포스트를 검색하여 product_id 가 제품의 포스트아이디인것을 찾아서 해당 매뉴얼을 자동 링크 처리한다. 매뉴얼 포스트를 웹에 표현하는 템플릿 코드에서는 검색과정없이 사용자 정의 필드값을 참조하면 바로 제품의 포스트아이디를 얻는다. 이 아이디로 제품정보를 활용할 수있다. 링크 생성, 제품명 표현 등. 제품 포스트에 있는 모든 필드에 접근가능하다.

 

 

 

 

 

4. 1:다 관계 - 워드프레스에서 포스트간의 관계 구현.

   
 

2개 포스트 사이의 1:다 관계관계 만들기.

 

1:다 관계 예: 특정 제품의 "활용예" 를 보이는 포스트가 있는데, 1개 제품에서도 "활용예" 는 여러 개가 만들어질 수 있다. 제품과 활용예의 관계가 1:다 관계이다.

 

데이터베이스로 1:다 관계를 다루기 위한 정의 상황은 아래 그림의 붉은 박스 부분과  같다.  관계의 정의 자체는 1:1 인 T_Manual 과 동일하다. 단 정보기록과정에서 "활용예1"  은 제품1, "활용예2" 인 경우 제품1, "활용예 3" 인 경우 제품2,... 이런 식으로 기록하면된다.

 

 

워드프레스에서의 구현.

 

"활용예" 를 담당하는 커스텀 포스트를 만든다. 커스텀 포스트에 사용자 정의 필드를 정의한다. 1:1 에서의 사용자 정의필드 추가하는것과 동일하다.  단지, 활용예 기록할 때마다 어떤 제품의 활용예인지를 해당 제품의 포스트 아이디를 기록하면 된다.

 

코드에서의 관계활용.

1:1 관계에서의 활용 방식과 동일함. 단 차이나는 부분은 제품 포스트 템플릿 코드에서 활용예를 검색할때 1:1 인 경우는 1개만 검출되는 반면  1;다 관계에서는 여러 개가 검출될 수 있기 때문에  리스트로 처리 해줘야 한다.

 

 


 

5. 다:다 관계 - 워드프레스에서 포스트간의 관계 구현.

   
 

2개 포스트 사이의 다:다 관계 만들기.

 

다:다 관계의 예 : 앞의 1:다 관계 있는 제품:활용예 에서는 활용예는 제품1개만을 보이면서 활용예를 만드는 경우에만 적합한 관계다. 만일 2개 이상의 제품이 사용된 활용예 를 만들었다면, 이 활용예는 제품1개로만 연결시키기에는 애매하다. 활용예 1개를 제품 2개 이상으로 연결시킬 수 있어야 한다. 활용예 1개가 제품 2개 이상과 연결되고 동시에 제품1개가 2개 이상의 활용예와 연결되는 상황이다. 이런 관계를 다:다 관계라고 한다. 본 글 2. 문제정의에서 예를들었던 제품과 구매고객과의 관계도 다:다 관계이다. 제품1개가 고객 여러 명에 관계되고, 고객1명이 제품 여러 개에 관계될 수 있다.

 

앞의 1:1 이나 1:다 관계 정의는 워드프레스에서도 아무런 어려움 없이 쉽게 달성됨을 알 수 있었다. 이미 구현가능한 수단이 워드프레스 체계내에서 제공되기 때문이다. 그런데 다:다 관계는 만만치 않다.

 

데이터베이스로 다:다 관계를 핸들링하는 테이블과 관계정의는 아래와 같다. 다:다 관계 형성시 추가의 테이블(그림에서 파란색 박스 속의 테이블)이 등장하는 것이 특징이다. 사람과 제품의 관계를 다루는 T_Order 가 정의된 이유도 사람과 제품사이의 관계가 다:다 이기 때문이다. 다:다 관계에서는 항상 추가로 관계자체를 정의하는 별도의 테이블이 요구된다.

 

 

워드프레스에서의 구현.

워드프레스에서 포스트들 사이에 다:다 관계를 만들 수 있는 기본 제공되는 수단은 없다.

데이터베이스에서 처럼 관계를 정의한 관계 테이블이 필요한데, 관계를 저장하기 위해서 관계를 담당하는 별도의 커스텀 포스트를 만들어서 구축하는 방법도 가능할 것 같긴 하나,  그 관리 과정이 만만치 않을 것 같다. 

 

다행히, 워드프레스에서 포스트들간의 다:다 관계 형성용 플러그인으로 Posts 2 Posts 라는 것이 나와있고 반응도 좋다.

 

플러그인 Posts 2 Posts

URL : https://wordpress.org/plugins/posts-to-posts/

기능 : 포스트들 간의 many-to-many 관계를 생성해줌. 개념적으로는  "관계정보만 전담하는 테이블"을 생성하는 것과 동등한 효과를 줌.

 

 

 

   

 

결론.

   
 

데이터베이스에서의 테이블을 생성하고, 테이블들과의 관계 형성하는 것처럼 워드프레스의 포스트와 사용자 정의 필드만으로도 1:1, 1:다 관계는 쉽게 정의된다. 다:다 관계 설정역시 플러그인 Post2을 도입하여 구현가능하다. 

 

워드프레스의 골격구조내에서 관계형 DB 에서 이뤄지는 데이터 모델링은  충분히 가능하다는 점. 

 

 

 

 

본 글이 포함된 통합 정리 글

 

WordPress 활용정보 정리 : http://igotit.tistory.com/23

 

 

 

 

///82.

 

Posted by 리치굿맨

댓글을 달아 주세요

  1. db

    db관리는 sqllite가 가장 무난한가요??

    2021.03.08 13:41 [ ADDR : EDIT/ DEL : REPLY ]
    • SQlite ( https://igotit.tistory.com/1012 ) 는 로컬DB (서버 기능 없는 DB ) 로만 사용가능하므로 로컬DB 만 요구되는 응용상황이면 Sqlite 간편합니다. 한편, 서버기능(원격으로 여러 클라이언트에서 DB 에 동시 접근가능) 서버기능 요구될 때는 mysql (무료), ms-sql (유료) 등을 많이 사용합니다.

      2021.03.08 14:10 신고 [ ADDR : EDIT/ DEL ]
    • 결정 장애오는데 주인장님은 블로그 글 관리할때 뭐쓰시나요? 서버기능은 필요가 없고(할줄도 모르고, 수작업으로 옮길것임) 그냥 데이터를 체계적으로 정리하고 싶은데, 인터넷쳐보면 sqlite나 mysql이 양대산맥 같아보이더라고요... 저는 최대한 보편적인거 쓰고 싶은데 어떤게 더 보편적인가요??

      2021.03.08 14:52 [ ADDR : EDIT/ DEL ]
    • 서버기능 필요없는 경우면 SQLite 가 가장 간결한 선택입니다.


      추가 답변.. - 질문내용중에 블로그 글 관리 관련.
      - SQLite 는 직접 만드는 프로그램에서 데이터저장 읽기 검색 등의 기능이 필요한 경우에 주로 사용합니다.
      - 현재 운영중인 티스토리 블로그 글 관리용으로는 별도의 데이터 베이스 이용하지 않고 있습니다.

      - 상기글에서 다루는 내용은 웹 구현작업시 php 나 asp등으로 직접 생코딩하여 구현할 때는 데이터 베이스를 임의로 설계하면서 임의 데이터 구조의 데이터류도 핸들링 가능한데 워드프레스 기반으로 웹페이지 구축시 데이터 베이스 핸들링 하는 부분이 자유롭지 않다보니 짜임새 있는 데이터 구조 달성하기가 원론적으로 불편한 툴이라서 고민했던 내용입니다. .. 결국은 워드프레스로는 그냥 단순한 게시판 글 관리수준의 용도로 사용하는 수준이 적합하고 복잡한 데이터 베이스 연동은 생코딩으로 직접 구축하는게 더 합리적이라고 결론 내렸습니다.
      복잡한 데이터 베이스 예 : 기업 자원관리 시스템.. 전자부품들의 BOM 매니징등 관리되어야 데이터들이 게시판 수준을 초월하는 류들..

      2021.03.08 16:50 신고 [ ADDR : EDIT/ DEL ]
    • 저는 노션이라는 메모 서비스로, 블로그 글 관리를 하고 있는데요.

      에버노트였으면 그냥 맘편히 썼을텐데... 솔직히 서비스 종료할까 불안해서요..

      그래서 산업 전반에 퍼져있는 db툴을 이용해서 블로그 글 관리를 하면 마음이 편하지 않을까? 해서 데이터베이스를 알아보고 있었습니다. 코딩보다는 인터넷 찾아보니 sqlite studio라든지 gui형식으로 이용할 수 있는게 많아보여서요. 아니면 잘은 모르지만 sqlite확장자 파일이 visual studio같은 곳에서도 열리지 않을까 하는 기대를 품고 있고요.

      요즘 검색하는 키워드는 wordpress sqlite, 워드프레스 db 연동,
      이런거 찾아보고 있고요..

      근데 블로그글 관리할 때 별도의 데이터 베이스를 이용하지 않으신다고요??

      글 쓰신거 보면 미친듯이 체계적으로 보이는데요.

      상위글, 연관글을 일목요연하게 정리해두신 것을 보면 경이로운 수준인데, 이걸 따로 데이터베이스로 관리하지 않으시고 그러면 그냥 뇌로 하시는 것인가요??

      2021.03.09 13:40 [ ADDR : EDIT/ DEL ]
    • 1.
      SQLite 주활용 영역이 본인이 Visual C++, Java 등으로 만드는 개발중인 프로그램에서 로컬DB기능 필요할때입니다. Visual C++ 에서 SQLite 활용 코딩예 상세보기 : https://igotit.tistory.com/1016 웹사이트연동용 DB는 my sql 이 많이 사용되는거 같고요.

      2. 블로그 글관리는 정보들의 연관성에 따라 순수 초 단순 노가다로 링크 기록하고 있어요 ^^ 단순노가다의 장점 : 정보들의 관계 정리 하는작업과정 중 저 자신도 대상에 대한 이해도가 더 높아지는 듯합니다. ㅎㅎ

      2021.03.09 13:57 신고 [ ADDR : EDIT/ DEL ]
  2. 그게 다 수작업이였다니...

    블로그 글 정리를 일일이 하신거라니 충격과 공포네요. 관련 글도 체계적이고 특히나 워드프레스 최상위 글은 링크가 수없이 많길래 당연히 일관된 정리 체계툴을 이용하고 계실줄 알았습니다. 장인은 도구를 가리지 않는군요..
    저도 쓸데없이 db구축에 열을 올리는 것보다는 그냥 메모앱 잘 써야겠네요.

    sqlite studio 깔았는데 이걸로 암호 관리하면 좋겠다는 생각이 드네요.

    암호 관리 어플은 뭔가 하나씩 부족합니다.
    1password나 bitwarden같은 건 완벽하긴한데, 대기업이 아니라는 것이 가장 불안합니다.
    요금 인상이나, 서비스 중단이 우려되고요.

    애플 구글 마소의 암호관리툴은,
    단순히 아이디 페스워드같은 것들만 정리하기 편하고, 관련된 정보(ex. 이메일, 보안질문)은 따로 관리를 해야해서 불편하고요.

    sqlite로 암호 정리하고, 원드라이브 개인 중요 보관소에 넣어두면 괜찮을듯..

    2021.03.09 14:23 [ ADDR : EDIT/ DEL : REPLY ]
    • bitwarden 데이터 내보내기 되는군요. bitwarden쓰면 되겠네요.

      and i also 오픈소스 좋아

      2021.03.09 14:40 [ ADDR : EDIT/ DEL ]