>백엔드 개발 >PHP 튜토리얼 >포럼에 기사를 작성할 때 기사에 태그를 추가하는 기능이 있을 것이라는 점을 여러분께 묻고 싶습니다. 이 데이터베이스는 어떻게 설계되어야 합니까?

포럼에 기사를 작성할 때 기사에 태그를 추가하는 기능이 있을 것이라는 점을 여러분께 묻고 싶습니다. 이 데이터베이스는 어떻게 설계되어야 합니까?

WBOY
WBOY원래의
2016-08-04 09:19:141209검색

기사 테이블이 있는데, 사용자가 입력한 태그를 제어할 수 없다고 생각했는데, 이 경우 태그를 사용하여 조건을 만들고자 할 경우 태그를 관리할 수 있는 방법이 없습니다. 쿼리하면 작동하지 않습니다.

답글 내용:

기사 테이블이 있는데, 사용자가 입력한 태그를 제어할 수 없다고 생각했는데, 이 경우 태그를 사용하여 조건을 만들고자 할 경우 태그를 관리할 수 있는 방법이 없습니다. 쿼리하면 작동하지 않습니다.

태그 테이블을 만듭니다. 태그 테이블에는 태그 ID, 이름 등이 포함됩니다. 상관 테이블을 생성한 후 ArticleID, TagID를 저장한 후 기사를 입력하거나 크롤링할 때 태그를 추출합니다. 먼저 태그 테이블이 이미 얻어졌는지 확인하고, 없으면 업데이트한 후, 태그의 ID를 연관 테이블에 저장하고, 기사의 ID를 추가합니다. 업데이트 시점이 되면 연관 테이블을 통해 직접 꺼내어 성공적으로 표시할 수 있습니다.

데이터베이스 설계에는 세 가지 주요 패러다임이 있습니다.
1. 데이터베이스의 필드는 원자적이며 분할될 수 없습니다. 태그는 일관성이 있는 것 같지만, 태그별로 별도의 속성을 가지고 있기 때문에 나중에 태그를 기준으로 목록을 별도로 필터링해야 하는 경우 불편합니다.

<code>CREATE TABLE `user_label` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '类型',
  `lable_name` varchar(255) NOT NULL COMMENT '标签名称',
  `user_id` int(11) NOT NULL COMMENT '创建者',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='标签表';</code>

태그는 별도의 데이터 테이블에 배치되고, 게시물 데이터 테이블은 태그 필드에 |로 구분되어 배치됩니다.

태그를 저장할 테이블을 만듭니다. 사용자가 태그를 추가할 때 태그가 중복되었는지 확인한 다음 태그 필드를 업데이트합니다. 기사 테이블

테이블 두 개

  • 태그 테이블 만들기

  • 기사 태그 연관 테이블, 필드는 기사 ID와 태그 ID입니다
    이렇게 하면 쿼리할 때 연관 테이블의 태그에 해당하는 기사 ID만 쿼리하면 됩니다.

이것은 데이터베이스 디자인에서 다대다 관계여야 합니다. 3개의 테이블, 기사 테이블 태그 - 기사 연관 테이블 태그 테이블을 디자인합니다. 태그 테이블의 ID인 이중 기본 키를 설정합니다. 기사 테이블 쿼리 때로는 조인 문을 사용하여 원하는 결과를 직접 필터링할 수 있습니다. 새로운 mysql5.7에 태그 데이터를 저장하는 또 다른 방법이 있습니다. 틀렸다면 지적 부탁드립니다.

@ivanilla님 말씀이 맞는 것 같아요. 이 테이블 디자인은 거의 활용도가 높을 것 같아요. 여러 테이블과 연결된 태그 필드를 쿼리할 필요가 없으며 사용이 간단합니다.

우연히 종이가 있어서 간단한 E-R 다이어그램을 그려봤습니다
포럼에 기사를 작성할 때 기사에 태그를 추가하는 기능이 있을 것이라는 점을 여러분께 묻고 싶습니다. 이 데이터베이스는 어떻게 설계되어야 합니까?

무작위로 밟지 않는 것이 좋을지 모르겠습니다. 비록 내 대답이 그 사람의 문제 해결에 직접적인 도움이 되지는 않았지만 그래도 아주 좋은 생각입니다. 바보야 우회로야 고마워

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.