2012-10-03 6 views
1

비디오 웹 사이트에서 모든 비디오는 하나 이상의 태그를 가질 수 있습니다. 각 비디오에 대한 정보가 담긴 비디오 테이블이 있습니다. 태그는 어떻게 저장합니까? 누구든지 태그에 대한 정보를 삽입하고 선택하는 방법을 보여줄 수 있습니까?비디오 태그를 데이터베이스에 저장하는 방법 (MySQL)?

감사합니다.

  • Videos
  • Tags
  • VideoTags VideoTags 컬럼의 기본 세트를 갖는, 관련 테이블로서 기능

: VideoIDTagID

답변

2

제안 할 수있는 한 가지 설계는 VideoList, TagList, Video_Tag의 세 테이블을 만드는 것입니다. VideoListtagList과 다 대다 관계를 유지합니다. 그들의 협회는 다음 Video_Tag 테이블에 나와 있습니다. 당신이 고유 한 값을 가질 수 있도록

CREATE TABLE VideoList 
(
    ID INT, 
    VideoName VARCHAR(150), 
    -- other columns here, 
    CONSTRAINT tb_pk PRIMARY KEY(ID), 
    CONSTRAINT tb_uq UNIQUE(VideoName) 
); 

나는 열 VideoNameUNIQUE 제약 조건을 추가했다.
CREATE TABLE TagList 
(
    ID INT, 
    TagName VARCHAR(150), 
    -- other columns here, 
    CONSTRAINT tb2_pk PRIMARY KEY(ID), 
    CONSTRAINT tb2_uq UNIQUE(TagName) 
); 

는 또한 열 TagNameUNIQUE 제약 조건을 추가했다.

CREATE TABLE Video_Tag 
(
    RecordID INT, 
    VideoID INT, 
    TagID INT 
    CONSTRAINT tb3_pk PRIMARY KEY(RecordID), 
    CONSTRAINT tb3_uq UNIQUE(VideoID, TagID), 
    CONSTRAINT tb3_fk1 FOREIGN KEY (VideoID) REFERENCES VideoList(ID), 
    CONSTRAINT tb3_fk2 FOREIGN KEY (TagD) REFERENCES TagList(ID) 
); 
+0

정확히 여기에 RecordID는 무엇입니까? – Loolooii

+0

신경 쓰지 마라. 이해 했어. 감사! – Loolooii

1

가장 일반적인 접근법은 3 개 테이블을 구비한다 . 비디오 테이블을 가정

2

비디오 당 하나 개의 기록, 같은 것을 가지고 뭔가 같은

Video 
---------- 
ID 
Title 
etc. 

그런 다음 태그에 대한 별도의 테이블을 만들 것이다 :

Tag 
---------- 
ID 
Title 

그리고이 둘을 연결하는, 연관 테이블을 만들면 :

VideoTag 
---------- 
VideoID 
TagID 

해당 테이블의 열은 단지 fo 키를 VideoTag 테이블로 이동하십시오. 이 중개 테이블을 사용하면 VideoTag 엔티티간에 다 대다 관계를 유지할 수 있습니다. 각 동영상에는 많은 태그가있을 수 있으며 각 태그는 여러 동영상에있을 수 있기 때문입니다.

관련 문제