在视频网站中,每个视频都可以有多个标签。我有一个包含每个视频信息的视频表。如何存储标签?谁能告诉我如何插入和选择有关标签的信息?
谢谢。
在视频网站中,每个视频都可以有多个标签。我有一个包含每个视频信息的视频表。如何存储标签?谁能告诉我如何插入和选择有关标签的信息?
谢谢。
假设您的视频表每个视频有一条记录,例如:
Video
----------
ID
Title
etc.
然后,您将为标签创建一个单独的表,例如:
Tag
----------
ID
Title
为了将两者关联起来,您需要创建一个关联表:
VideoTag
----------
VideoID
TagID
该表中的列只是Video
和Tag
表的外键。Video
这个中间表允许您在和实体之间保持多对多的关系Tag
,因为每个视频可以有很多标签,每个标签可以在很多视频上。
我可以建议的一种设计是创建三个表: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)
);
我还在UNIQUE
column 上添加了约束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)
);
最常见的方法是有 3 个表:
Videos
Tags
VideoTags
其中 VideoTags 用作关联表,具有基本的列集:VideoID
, TagID
.