私は Yii Web アプリケーション用のデータベースを設計していますが、正しい方法で行っているかどうか確信が持てません。
CREATE TABLE user
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE post
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
description TEXT NOT NULL,
media TEXT NOT NULL,
tag_id INTEGER NOT NULL,
status INTEGER NOT NULL,
create_time INTEGER,
update_time INTEGER,
user_id INTEGER NOT NULL,
CONSTRAINT FK_post_user FOREIGN KEY (user_id)
REFERENCES user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE comment
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
content TEXT NOT NULL,
status INTEGER NOT NULL,
create_time INTEGER,
user_id INTEGER NOT NULL,
post_id INTEGER NOT NULL,
CONSTRAINT FK_comment_post FOREIGN KEY (post_id)
REFERENCES post (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tag
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(128) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
問題:
1.) post テーブルに tag_id があります。既存のタグと新しく追加されたすべてのタグをタグテーブルに保存してから、誰かが既存のタグを使用するか、新しいタグを作成して、tag_id として追加し、「、」でテーブルを投稿することを考えていました。これが最善の解決策ですか?
2.) コメント テーブルには、user_id と post_id があります。コメントテーブルに2つの外部キーを設定する必要がある場合、外部キーがどのように機能していると思いますか? 私はそれを試しましたが、エラーが発生しました。
3.) ポスト テーブルにはメディア行があります。この行の場所に保存して、YouTube やその他のソースからアップロードされた画像または埋め込みコードを保存します。そのために同じ行のみを使用しても問題ありませんか、それとも別々に使用する必要がありますか? 画像用に 1 つ、埋め込みコード用に 1 つ?
前もって感謝します