2012-10-03 58 views

回答

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

我加在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个表:

  • Videos
  • Tags
  • VideoTags

凡VideoTags用作关联表,具有碱性的一组列:VideoIDTagID

2

假设你的视频表有每个视频的一个记录,是这样的:

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

然后,您可以创建标签为一个单独的表,是这样的:

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

而且两个相关联,你创建一个关联表:

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

该表中的列将只是fo将密钥统一为VideoTag表。此中间表格允许您保持VideoTag实体之间的多对多关系,因为每个视频都可以有多个标签,并且每个标签都可以位于多个视频上。

相关问题