複数の科目に関するトレーニング ビデオをユーザーに提供する Web サイトを計画しています。ユーザーは、ビデオを表示し、視聴履歴を確認し、ビデオにコメントし、相対的な試験を受け、試験に合格するとバッジ/証明書を取得できます。また、ビデオ中に問題が発生した場合は、ライブで質問を送信できます。また、ユーザーがお互いに助け合ったり、友達を追加したり、メッセージを送信したりできるフォーラムもあります。この考えを念頭に置いて、私は現在データベースを設計していますが、以前はデータベース設計の経験がなかったので、以下を確認してください。設計して、パフォーマンスとベスト プラクティスに関するいくつかの提案をしてください。よろしくお願いします。
がある
ユーザープロフィール
ユーザー名 VARCHAR
ID INT
列挙型
電子メール VARCHAR
Date_created TIMESTAMP
Date_modified TIMESTAMP
VARBINARY を渡す
名前 VARCHAR
証明書 VARBINARY
Ranking_points INT
性別ENUM
生年月日
Avatar_url VARCHAR
ビデオ
タイトル VARCHAR
ID INT
カテゴリ ENUM
説明 TINYTEXT
Date_created TIMESTAMP
Tmp_name CHAR
ファイル名 VARCHAR
サイズ ミディアムミント
Subtitle_url VARCHAR
Liked_count INT
Shared_count INT
タグ ENUM
カテゴリー
カテゴリ VARCHAR
ID INT
説明 TINYTEXT
最近見たもの
ユーザー ID INT
Video_id INT
Viewed_date TIMESTAMP
友達リスト
ユーザー ID INT
フレンド ID INT
USER_QUESTIONS
ユーザー ID INT
Question_id INT
Question_title VARCHAR
Question_content ロングテキスト
Date_asked TIMESTAMP
VIDEO_COMMENTS タイトル VARCHAR
Video_id INT
Comment_content LONGTEXT
ユーザー ID TINYTEXT
Date_created TIMESTAMP
USER_MESSAGES
ユーザー ID INT
Message_id INT
Message_content LONGTEXT
Sender_id INT
Date_created TIMESTAMP
オンライン試験/評価
id VARCHAR
列挙型
Exam_url VARCHAR
説明 TINYTEXT
Date_created TIMESTAMP
EXAMS_TAKEN_BY_USER
試験 ID INT
ユーザー ID INT
Exam_result SMALLINT
Date_taken TIMESTAMP
さらに 2 つの質問があります。1. ユーザー コメントにコメントを許可したいのですが、データベース構造をどのように設計すればよいですか? 2. 1 つのビデオは複数のカテゴリに属することができます。ビデオ カテゴリ用の新しいテーブルを作成する必要がありますか、それとも VIDEO テーブルのカテゴリ フィールドに一連のカテゴリを配置する必要がありますか?