Я выполнил несколько заданий, и я часто вижу такие базы данных:
Column_Values
+------+--------------+--------------+
| id | field_id | label |
+------------------------------------+
| 1 | first_name | First Name +-----------------+
| 2 | last_name | Last Name +-----------------------+
| | | | | |
| | | | | |
| | | | | |
+------+--------------+--------------+ | |
| |
User Row | |
+-------+ | |
| id | | |
+-------+ | |
+-----------+ 9000 | | |
| | 10000 | | |
| | | | |
| | | | |
| | | | |
| +-------+ | |
| | |
| Mapping Table | |
| +------------+-------------+---------+ | |
| | User_Id | Field ID | Value | | |
| +------------------------------------+ | |
+-----------> 9000 | 1 | John <-----------------+ |
| 9000 | 2 | Doe <-----------------------+
+------------+-------------+---------+
Вместо того, чтобы фактически иметь столбец с first_name
и last_name
, имя столбца фактически сохраняется в другой таблице.
Как выбрать пользователя, чтобы получить что-то вроде?
+---------+-------------+-----------+
| User_ID | First Name | Last Name |
+-----------------------------------+
| 9000 | John | Doe |
| | | |
+---------+-------------+-----------+
Также есть имя для этого типа базы данных? Кажется, логика заключается в том, чтобы иметь динамические столбцы, однако я думаю, что эту проблему можно решить запланированным временем простоя для обновления таблиц.