Я разрабатываю базу данных, которая будет содержать информацию из разных приложений, где некоторые теги мультиселемента содержат несколько значений в одном поле.Является ли эта нормализация нормализации данных хорошей реализацией?
Например, простейший случай, что в одном приложении существует следующий селектор:
You are: Lord
Lady
пыльник имеет это одно:
You are: Monsieur
Madame
Наконец то, что мне нужно в централизованной базе данных (Datawarehouse) является нормализованная таблица каждого клиента.
customer_id | customer_name | customer_type
--------------------------------------------
1 | John | Sir
2 | Sia | Madame
Я думаю, что для нормализации этих данных в то время как я развиваю стандартизацию этих данных в происхождении лучшая политика заключается в создании вспомогательных таблиц, которые сохраняют связь моих нормированных данных (output
) и input
данных из заявление.
Например:
Мои нормализованные ожидаемые значения
id | value
----------------
1 | Sir
2 | Madame
Мои входных значений ожидается
id | value
----------------
1 | Lord
2 | Lady
3 | Monsieur
4 | Madame
Моя реляционная таблица
id | normalized_value_id | expected_value_id
----------------------------------------------
1 | 1 | 1
2 | 1 | 3
3 | 2 | 2
4 | 2 | 4
Я думаю, что это правильная политика в этом случае, потому что я не знаю точных значений и точного отношения с ожидаемым результатом и ожидаемыми результатами после нормализации значений. Кроме того, я не знаю, сколько приложений требуется нормализовать (возможно, 2, может быть, 100).
В этом случае Если у меня есть 2 приложения для нормализации в начале, я могу создать свою нормализованную таблицу ожидаемых значений без каких-либо осложнений, тогда я могу добавить ожидаемые значения ввода, пока я обнаруживаю новые значения, а затем я отношу это в реляционная таблица без каких-либо изменений в процессе нормализации.
Кроме того, я могу использовать эти три таблицы, чтобы генерировать весь процесс нормализации для всех мультиселектора, например:
Улица Мультиселектор:
You live: Str
Ave
Другой:
You live: St
Av
Мой нормализуется ожидаемые значения
id | value
----------------
1 | Sir
2 | Madame
3 | Street
4 | Avenue
Мои входные ожидаемые значения
id | value
----------------
1 | Lord
2 | Lady
3 | Monsieur
4 | Madame
5 | Str
6 | St
7 | Av
8 | Ave
Моя реляционная таблица
id | normalized_value_id | expected_value_id
----------------------------------------------
1 | 1 | 1
2 | 1 | 3
3 | 2 | 2
4 | 2 | 4
5 | 3 | 5
6 | 3 | 6
7 | 4 | 7
8 | 4 | 8
Является ли эта реализация достаточно хорошо и последовательно за то, что я хочу сделать?
@philipxy Почему вы так говорите? Наконец, что вы делаете, это нормализовать данные (с идентификаторами вы можете ссылаться на любое из этих значений, а затем вы можете уменьшить избыточность данных) – Maik
Уменьшение избыточности базы данных «нормализация» предполагает замену отношения другими, которые присоединяются к нему. Это не связано с добавлением идентификаторов. (Во всяком случае, это сжатие данных.) Если вы думаете, что это так, вам нужно прочитать учебник. Когда я впервые прочитал ваше сообщение, я редактировал ваш заголовок, добавил тег «нормализация базы данных» и прокомментировал, что нормализация не связана с добавлением идентификаторов. Но потом я подумал, что вы подразумеваете «нормализацию» в смысле систематического изменения значений данных, как и в статистике, за «нормализацию» тега, как при преобразовании многих входных значений в один нормализованный. Поэтому я отменил эти изменения. – philipxy