В настоящее время у меня есть таблица Пользователи, и теперь я хочу добавить другую информацию о пользователе для конкретного пользователя. Форма, которая принимает эту информацию, имеет такие поля, как языки и ОС, каждое из которых содержит список параметров с флажками.
Например:
Известные языки: checkbox PHP, Java, Ruby
Знание ОС: 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 в качестве языка. для каждого из разных пользователей.
Есть ли лучший способ организовать схему?