在视频网站中,每个视频都可以包含多个标记。我有一个视频表,其中包含有关每个视频的信息。如何存储标签?谁能告诉我如何插入和选择有关标签的信息?
感谢。
答案 0 :(得分:3)
假设您的视频表每个视频有一条记录,例如:
Video
----------
ID
Title
etc.
然后,您将为标签创建一个单独的表,例如:
Tag
----------
ID
Title
要关联这两者,您需要创建一个关联表:
VideoTag
----------
VideoID
TagID
该表中的列只是Video
和Tag
表的外键。此中间表允许您在Video
和Tag
实体之间保持多对多关系,因为每个视频可以包含许多标记,每个标记可以在许多视频上。
答案 1 :(得分: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)
);
我还在列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作为关联表,具有基本的列集:VideoID
,TagID
。