Модификация базы данных или начать заново?

Вы можете использовать lodash's findIndex , чтобы получить индекс конкретного элемента, а затем сплайсировать его.

myArray.splice(_.findIndex(myArray, function(item) {
    return item.value === 'money';
}), 1);

Обновить

Вы также можете использовать ES6's findIndex ()

Метод findIndex () возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной функции тестирования. В противном случае возвращается -1.

blockquote>
myArray.splice(myArray.findIndex(myArray, function(item) {
    return item.value === 'money';
}), 1);

1
задан msarchet 5 July 2010 в 17:43
поделиться

2 ответа

Нормализация - это хранение данных без избыточности или аномалий.

Одним из примеров аномалии может быть ситуация, когда атрибуты пользователя в вашей главной таблице не синхронизированы с таблицей пользователей. Кто-то изменяет информацию о пользователе в одной таблице, не отражая изменения в дублирующей копии. Проблема в том, что трудно понять, какое изменение является правильным.

Некоторые люди думают, что нормализация - это просто разбиение таблиц на более мелкие таблицы, потому что именно это они считают наиболее распространенным типом изменений. Но цель нормализации не в этом. Просто по совпадению большинство ошибок ненормализации связаны с запихиванием слишком большого количества данных в одну таблицу, где правильным было бы использование нескольких таблиц.

Трудно ответить на ваш вопрос о том, следует ли модифицировать вашу базу данных на месте или создать совершенно новую базу данных и мигрировать на нее.

Что бы я сделал в вашем случае, так это разработал бы правильно нормализованную базу данных, а затем изучил бы различия между ней и вашей существующей базой данных. Представьте, что вам придется сделать для каждого различия, чтобы изменить старую базу данных на новую, в отличие от миграции данных. Возможно, потребуется всего несколько изменений, только удаление лишних столбцов. А может быть, потребуется серьезная переработка. Невозможно сказать, пока вы не выполните работу по созданию нормализованной модели данных, чтобы вы могли сравнить.

Более важной задачей может стать адаптация кода приложения, использующего базу данных. Одним из способов облегчить этот переход является создание представлений базы данных поверх нормализованной базы данных, которые имитируют вашу старую ненормализованную базу данных. Таким образом, можно надеяться, что вам не придется переписывать каждый бит кода в вашем приложении сразу, вы сможете оставить часть кода прежней, по крайней мере, до тех пор, пока не сможете провести рефакторинг кода.

Также идеально иметь хороший набор регрессионных тестов, чтобы вы могли быть уверены, что ваше приложение по-прежнему выполняет все задачи, которые оно должно выполнять, пока вы рефакторите базу данных и код, использующий базу данных.


По поводу вашего комментария: Вы упомянули, что одновременно добавляете новую функциональность в модель пользователя. Я бы счел слишком запутанным пытаться делать это одновременно с рефакторингом. Рефакторинг обычно не меняет функциональность, он меняет только реализацию. Но рефакторинг добавляет ценность, поскольку делает код более простым в сопровождении или отладке, повышает эффективность или готовит вас к тому, чтобы легче вносить изменения в функциональность в будущем.

Я бы порекомендовал вам не медлить и добавить новые возможности пользовательской модели в старую ненормализованную базу данных. Хорошо получить преимущества новых возможностей в краткосрочной перспективе, а также вам нужно сначала разработать эти возможности, чтобы понять их достаточно хорошо, чтобы учесть их в вашем большом проекте рефакторинга.


Вот некоторые рекомендации по ресурсам, которые помогут вам понять, что такое нормализация:

Вот пара ресурсов по управлению изменениями в базе данных:

2
ответ дан 2 September 2019 в 23:17
поделиться

Сколько у вас времени и насколько велика база данных?

Очень трудно ответить на этот вопрос черным по белому, не будучи погруженным в вашу среду и бизнес-кейс. Не похоже, что вы ограничены в технологиях, просто нужно выбирать между решениями.

Пересоздание - это то, к чему инстинктивно стремятся программисты. Однако в "реальном мире" мы иногда тратим много усилий на то, что не используется или не прослужит так долго.

Итак, пища для размышлений. Сколько времени вам потребуется, чтобы переделать базу данных, сколько это будет стоить. Будет ли работа с тем, что есть, достаточной для требуемой функциональности?

0
ответ дан 2 September 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: