Давайте предположим, что в моей системе есть два типа пользователей.
Те, кто может программировать, и те, кто не может.
Мне нужно сохранить оба типа пользователей в одной таблице.Пользователи, которые могут программировать, имеют множество свойств, отличных от тех, которые не могут, определенных в другой таблице.
В чем преимущества следующих решений и есть ли лучшие решения?
Решение 1
Одна таблица, содержащая столбец с соответствующим свойством.
Table `users`:
----------------------------
| id | name | can_program |
----------------------------
| 1 | Karl | 1 |
| 2 | Ally | 0 |
| 3 | Blake | 1 |
----------------------------
Решение 2
Две таблицы связаны друг с другомчерез первичный ключ и внешний ключ.Одна из таблиц содержит пользователей, а другая - только идентификаторы тех, кто может программировать.
Таблица users
:
--------------
| id | name |
--------------
| 1 | Karl |
| 2 | Ally |
| 3 | Blake |
--------------
Таблица can_program
:
---------------------
| id | can_program |
---------------------
| 1 | 1 |
| 3 | 1 |
---------------------