MySQLデータベース設計 - チェックリスト/クイズアプリケーション
-
10-10-2019 - |
質問
私は現在、「チェックリスト」タイプのウェブサイトを作成しようとするときに、Codeigniter、PHP、およびMySQLをすべて一度に「学習」しています。
私は私のmysql db-designに少し立ち往生しています...(実際には完全に立ち往生しています)
結局のところ...
1つのプロジェクトには、3つのタイプのいずれかを含めることができます。 「タイプA/B/C」
タイプA 20の質問があります
タイプb =タイプA + 15の質問
タイプc =タイプB + 15の質問...
だから基本的に私は簡単に言うことができるようにしたい、質問aは タイプA および/または タイプb しかし cではありません.
今、私がしていることが正しいかどうかはわかりませんが、基本的に2つのテーブルを作成してから、それらの間の関係を「多くの人に」と設定します(私は思う?) n:m mysqlワークベンチのm
ProjectType
id
ProjectTypeName
Questions
ID
Title etc...
ProjectType_has_Questions
ProjectType_id
Questions_id
また、すべての質問は、「できない、必要ない」と3つの結果(現在の事実)と3つの修正(結果の改善)を持っています。
これがここで誰にも意味があるかどうかはわかりません。
何かご意見は?
PS:画像を添付しようとしましたが、これが初めてのサイトを使用しているのは、これが許可されていなかったのです。
解決
ここで理解していることに返信します。あなたの質問でコメントした他のいくつかの質問がありました。
プロジェクトの種類が常に集約される場合 - つまり、タイプCは常にタイプAのスーパーセットであるタイプBのスーパーセットです。質問に対して、特定の質問が含まれる最大のプロジェクトを指定することができますin。たとえば、タイプAとBに質問が表示される場合、質問をタイプBとして指定します。3つのタイプすべてに表示される場合は、タイプCとして指定します。
しかし、あなたがこれをするとき、あなたは自分自身をコミットしています。これを行うためのより柔軟な方法は、質問IDとプロジェクトタイプIDを含むリンクテーブルを持つことです。各質問には、この表に1つ以上のエントリがあります。