私はスキルと教育の両方の詳細のためのマトリックスをまとめることを検討しています。 competency_levelとpriority_levelは(DBまたはNULL)フォーラムで空白にすることができDBデザインのベストプラクティス:個々のエントリを持つ複数の行、または複数のエントリを持つ単一の行を返しますか?
skills_mat_id | user_id | skill | competency_level | priority_level |
と教育のために似たような、私は列を持っています。
私はすなわち、各スキルのための別の行エントリを作成しなければならない問題がある:
1, user1, java, 7, 1
2, user1, php, 6, 2
3, user1, css, 4, 2
4, user1, python, 8, NULL
または私は同じ列内のすべてのものが必要です:
1|user1|java,php,css,python|7,6,4,8|1,2,2,NULL
を私が最初のように感じますオプションは実装するのがずっと簡単です(NULL /空欄のためにフロントエンドで間違いが起こりにくい)が、2番目のオプションはより効率的に見え、大きなスキルのリストになる可能性のある行が1つ返されます。どちらのオプションもパフォーマンスに違いはありますか?これはフロントエンドの問題ですか?あるいは、設計の決定はDBのパフォーマンスに大きな影響を与えますか?私はこのためにMySQLを使用しますが、特にデータベースプラットフォームの一部ではありません。
私は、第2のオプションで特定のスキルを更新または削除するようなことに少し心配しています。誤ってレコードの間違った部分を削除したり更新したりする可能性を減らす方法でこれをどうやって進めるかについては、私はあまり確信していません。
「スキル」または「教育」テーブルを大幅に増やす数十万人のユーザーが潜在的に存在すると考えているため、このようなデータセットにベストプラクティスのアプローチがあるかどうか疑問に思っていましたか?
正規化で間違っているのは難しいです。それが何であるか分からなければ、私はこの本「データベース設計for Mere Mortals」について良いことを聞いてきました。 –