動画 Web サイトでは、すべての動画に複数のタグを付けることができます。各ビデオに関する情報を含むビデオ テーブルがあります。タグの保存方法を教えてください。タグに関する情報を挿入および選択する方法を教えてもらえますか?
ありがとう。
動画 Web サイトでは、すべての動画に複数のタグを付けることができます。各ビデオに関する情報を含むビデオ テーブルがあります。タグの保存方法を教えてください。タグに関する情報を挿入および選択する方法を教えてもらえますか?
ありがとう。
ビデオ テーブルにビデオごとに 1 つのレコードがあると仮定すると、次のようになります。
Video
----------
ID
Title
etc.
次に、次のようなタグ用の別のテーブルを作成します。
Tag
----------
ID
Title
2 つを関連付けるために、関連付けテーブルを作成します。
VideoTag
----------
VideoID
TagID
そのテーブルの列は、Video
およびTag
テーブルへの外部キーにすぎません。Video
この中間テーブルを使用すると、とエンティティ間の多対多の関係を維持できます。これはTag
、各ビデオに多数のタグを付けることができ、各タグを多数のビデオに配置できるためです。
VideoList
私が提案できる設計の 1 つは、 、TagList
、 の3 つのテーブルを作成することです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
.