現在、Usersテーブルがあり、特定のユーザーに関する他のユーザー関連情報を追加したいと考えています。この情報を受け入れるフォームには、言語やOSなどのフィールドがあり、それぞれにチェックボックス付きのオプションのリストがあります。
例えば:
既知の言語:チェックボックスPHP、Java、Ruby
OSの知識:Windows、Linux、Mac
現在、私のデータベーステーブルは次のようになっています。
USER
----------------------------------------
| ID | Name |
-----------------------
| 1 | John |
-----------------------
| 2 | Alice |
-----------------------
LANGUAGES
----------------------------------------
| ID | User_ID(FK) | lang-name |
----------------------------------------
| 1 | 1 | PHP |
----------------------------------------
| 1 | 2 | Java |
----------------------------------------
OS
----------------------------------------
| ID | User_ID(FK) | os-name |
----------------------------------------
| 1 | 1 | Windows |
----------------------------------------
| 1 | 2 | Windows |
----------------------------------------
これは良いスキーマのように見えますか?それぞれが独自のテーブルを持つ必要があるそのようなユーザー関連のフィールドはもっとたくさんあり、何千人ものユーザーがPHPを知っているので、テーブル内に多くの冗長性があるようです。したがって、言語としてPHPを使用すると何千もの行があります。異なるユーザーごとに。
スキーマを整理するためのより良い方法はありますか?