如何将视频标签存储到数据库(MySQL)?

时间:2012-10-03 14:14:14

标签: mysql database database-design

在视频网站中,每个视频都可以包含多个标记。我有一个视频表,其中包含有关每个视频的信息。如何存储标签?谁能告诉我如何插入和选择有关标签的信息?

感谢。

3 个答案:

答案 0 :(得分:3)

假设您的视频表每个视频有一条记录,例如:

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

然后,您将为标签创建一个单独的表,例如:

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

要关联这两者,您需要创建一个关联表:

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

该表中的列只是VideoTag表的外键。此中间表允许您在VideoTag实体之间保持多对多关系,因为每个视频可以包含许多标记,每个标记可以在许多视频上。

答案 1 :(得分:2)

我建议的一个设计是创建三个表:VideoListTagListVideo_TagVideoListtagList有多对多的关系。然后他们的关联列在Video_Tag表格上。

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

我在列UNIQUE上添加了VideoName约束,以便您拥有唯一值。

CREATE TABLE TagList
(
    ID INT,
    TagName VARCHAR(150),
    -- other columns here,
    CONSTRAINT tb2_pk PRIMARY KEY(ID),
    CONSTRAINT tb2_uq UNIQUE(TagName)
);

我还在列UNIQUE上添加了TagName约束。

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)
);

答案 2 :(得分:1)

最常见的方法是有3个表:

  • Videos
  • Tags
  • VideoTags

其中VideoTags作为关联表,具有基本的列集:VideoIDTagID