#database
#База данных
Вопрос:
Мой вопрос просто. Я могу объяснить с помощью изображения. Я создам базу данных, и это ВСЕ таблицы базы данных с одинаковыми столбцами (IsDeleted, isActive, CreatedDate, UpdateDate, CreatedUserId и т.д.) Каков наилучший подход к разработке этой базы данных? Должен ли я, как в первой таблице, определять, что все таблицы имеют одинаковые столбцы, или как во второй, что ВСЕ таблицы связаны с базовой таблицей?
Ответ №1:
В вашем случае больше подходит первый подход.
Комментарии:
1. Вы должны сохранить все поля, принадлежащие пользователю, в таблице user.
Ответ №2:
Не вижу причины, по которой вы выбрали бы второй дизайн, если только ваш выбор и повторное отображение не включают идентификатор пользователя и имя.
Ответ №3:
В общем, вы должны сохранять все поля, которые принадлежат User
в User
таблице, за несколькими исключениями:
-
необязательность; если есть набор полей, которые применяются только к подмножеству пользователей, у вас может получиться таблица «один к одному», которая отделена от User, поскольку она не будет полезна для большинства пользователей. Например, если у вас была
Employee
таблица, содержащая сведения, применимые только к менеджерам, вы могли бы разделитьManager
таблицу только с информацией, относящейся к этому менеджеру. -
удобочитаемость при наличии очень большого количества полей, которые являются взаимно однозначными с
User
: если это вызывает беспокойство, вы могли бы разделитьUser
на несколько таблиц, каждая из которых имеет дело с одним предметом о пользователе, например, контактной информацией пользователя, платежной информацией пользователя и т.д. -
производительность, например, ваша производительность снизилась, потому что вам нужно постоянно запускать какое-либо обновление, которое блокирует всю
User
таблицу для доступа к одному или двум значениям в этой таблице. В этом случае вы могли бы разбитьUser
на несколько таблиц, чтобы все это не блокировалось при каждом запуске.