0

私は大学のプロジェクトに取り組んでおり、現在のデータベース設計に少し興味があります。

まず、データベース テーブルの一般的な命名規則は何ですか?単数形または複数形ですか? 私はかつて私について何かを読んだことがありますが、私はそれを思い出せません?! (例: テーブル: ユーザーまたはユーザー)

2 番目の質問は、プロジェクトに固有のものです。

ユーザーは Web サイトにログインでき、リストから 10 個の要素を選択し、各要素に 1 から 4 までの優先順位を付ける必要があります。私の最初の試みは、ユーザーの選択を 1 行に CSV として保存することでした (例: 1,2,3;4,5,6;7,8;9,10 (優先度 1 の要素 1,2,3 の選択を表すなど)。2 番目の試みは、[user_id]|[choosen_element]|[choosen_priority] のように、各選択肢を 1 つのエントリとして保存することでした。より良いバリアントは何だと思いますか、それとも私が考えていないより良いバリアントはありますか?

3 番目の質問は、ログインと権限の管理に関するものです。

ユーザーが選択できる要素はグループ化されています。各要素は複数のグループに属することができます。要素と同じグループまたはそのサブセットを持つモデレーターがいて、所有しているグループのすべての要素を編集できます。グループに加えて、ユーザー、モデレーター、管理者などのユーザーの権利もあります。

私の最後の設計では、グループテーブルの一部としてユーザーの権限を定義して、モデレーターグループにいるすべてのユーザーが自分もいるグループのアイテムを編集できるようにしました.

私の最初の試みでは、アプリケーションに別のロジックを持つ別のテーブルにグループと権利がありました!

アプリケーションの権利をグループから分離する方がよいでしょうか?

何かを見逃した場合、または誰かが写真を見るのが好きな場合は、これが私の現在のレイアウトのプロットです ;)

http://screens.rofln.de/2012-06-19-4f3o3A.png

ありがとう!

ところで、誰かが知りたい場合は、PHPとMySqlを使用しています!

4

2 に答える 2

2
  1. これは主観的なものですが、一般的な ORM で提供されている規則に従うと、複数形はかなり一般的なようです。どちらを選んだかは重要ではないと思います。
  2. それぞれの選択肢を表すレコードが最も理にかなっています。これにより、順序付けや、評価の高い要素などを検索するためのクエリが可能になります。最後に、パックされたアイテムではなくアイテムのリストを操作するため、アプリケーションでデータを読み取り、表示方法を変更することが簡単になります。価値。
  3. 問題のドメインに精通していないため、これは答えが難しいです。ユース ケースを開発し、それを提案されたモデルに適用して、どこに亀裂があるかを確認することをお勧めします。
于 2012-06-19T12:29:42.633 に答える
1
  1. 単数形または複数形のどちらを使用するかは問題ではありません。重要なのは、標準の使用に一貫性があることです。

  2. MySQL のコンマ区切り値は不適切です。これは主に、リレーショナル データベースを使用する合同方法ではないためです標準のデータベース リレーションシップ、または多対多のテーブルを使用することをお勧めします。

  3. 権利管理システムをより柔軟にすると、より複雑になります。この場合の適切なヒューリスティックは、要件を満たす最も単純なシステムを構築することですが、より単純なものはありません

簡単と言えば、なぜユーザーデータ用に別のテーブルがあるのですか? 一部のユーザーが 2 組の名前と詳細を持っていると思いますか?

于 2012-06-19T13:06:01.550 に答える