2012-02-11 2 views
4

태그로 게시 할 웹 사이트를 만들 예정입니다. 태그는 stackoverflow.com과 같이 최대 5 개의 태그 수입니다.stackoverflow.com과 같은 태그 시스템을 만들려면 어떻게해야합니까?

누구나 StackOverflow의 태그 시스템에 알릴 수 있습니까? 게시물과 태그가있는 관계형 데이터베이스 시스템.

게시 테이블에 열을 추가해야합니까, 아니면 별도의 태그 테이블을 만들어야합니까? 태그는 공백이나 쉼표로 구분할 수 있습니다.

답변

8

사용 가능한 태그의 목록을 포함하는 테이블을 생성하십시오. 게시물에

  • 외래 키 :

    당신은 또한 확실히 포함하는 별도의 응용 태그 테이블을 만들어야합니다.

  • 태그의 외부 키입니다.
  • 순서를 나타내는 시퀀스 번호 .
  • 에 태그를 추가 한 사람이나 추가 한 사람과 같은 다른 사람이 관심을 가질만한 것이 있습니다.

더 적은 수의 태그를 허용하도록 비즈니스 규칙을 변경하려는 경우 비정규화된 디자인 (5 열 추가)을 사용하기 때문에 정규화 된 디자인을 사용하려고합니다. 또한 태그를 추가 할 때와 누구와 같은 다른 유지해야 할 정보가있는 경우 도움이되지 않습니다.


편집 : DDL

영업의 요청에 따라이 :

CREATE TABLE post (
    id   INTEGER  IDENTITY 
, title   VARCHAR(1000) NOT NULL 
, added_date DATETIME  NOT NULL 
, posting_user_id INTEGER  NOT NULL 
, ... (and so forth) ... 
, PRIMARY KEY (id) 
, FOREIGN KEY (posting_user_id) REFERENCES posting_user (id) 
); 

CREATE TABLE tag (
    id   INTEGER  IDENTITY 
, term   VARCHAR(20) NOT NULL 
, description VARCHAR(1000) NULL 
, ... (and so forth) .... 
, PRIMARY KEY (id) 
); 

CREATE TABLE applied_tag (
    post_id  INTEGER  NOT NULL 
, tag_id  INTEGER  NOT NULL 
, display_order INTEGER  NOT NULL 
, tagging_user INTEGER  NOT NULL 
, applied_date DATETIME  NOT NULL 
, ... (anything else you want).... 
, PRIMARY KEY (post_id, tag_id_, display_order) -- Or use an auto-increment, but this is unique. 
, FOREIGN KEY (post_id) REFERENCES post (id) 
, FOREIGN KEY (tag_id) REFERENCES tag (id) 
, FOREIGN KEY (tagging_user) REFERENCES posting_user (id) 
); 
+0

당신은 관계형 데이터베이스 schemal을 게시 할 수 있습니다. 그것은 이해하는 데 도움이 될 것입니다. – shibly

관련 문제