2

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

谢谢。

4

3 回答 3

3

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

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

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

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

为了将两者关联起来,您需要创建一个关联表:

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

该表中的列只是VideoTag表的外键。Video这个中间表允许您在和实体之间保持多对多的关系Tag,因为每个视频可以有很多标签,每个标签可以在很多视频上。

于 2012-10-03T14:17:05.000 回答
2

我可以建议的一种设计是创建三个表:VideoList, TagList, Video_Tag. VideoList与 有多对多的关系tagList。然后将它们的关联列在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)
);

我还在UNIQUEcolumn 上添加了约束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)
);
于 2012-10-03T14:19:35.490 回答
1

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

  • Videos
  • Tags
  • VideoTags

其中 VideoTags 用作关联表,具有基本的列集:VideoID, TagID.

于 2012-10-03T14:15:54.117 回答