Как вы нормализуете таблицу с многозначным полем? - PullRequest
1 голос
/ 28 июня 2019

Я хочу нормализовать промежуточную таблицу на две таблицы.Одно из полей входных данных содержит несколько значений, разделенных точкой с запятой.

DATETIME | FILENAME | MULTIVALUEDFIELD
7-22-18 | somefile.txt | value1;value2;value3

Я уверен, что вы, мастера данных, знаете, куда это идет, но я хочу, чтобы это нормализовалось таким образом:

ID | FILENAME |
1 | somefile.txt

и

ID | SINGLEVALUES | OTHERTABLEID
1 | value1 | 1
2 | value2 | 1
3 | value3 | 1

Извинитедля форматирования вопросов: я не видел способ сделать таблицы.Любая помощь будет потрясающей!

1 Ответ

1 голос
/ 28 июня 2019

Звучит так, будто у вас здесь есть отношения многие ко многим; filename может относиться ко многим singlevalues, а singlevalues может появляться во многих filename с.

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

dbo.filename
+-------------+---------------+
| filename_sk |   filename    |
+-------------+---------------+
|           1 | somefile.txt  |
|           2 | otherfile.txt |
+-------------+---------------+
dbo.value
+----------+--------+
| value_sk | value  |
+----------+--------+
|        1 | value1 |
|        2 | value2 |
|        3 | value3 |
+----------+--------+
dbo.bridge
+-------------+----------+
| filename_sk | value_sk |
+-------------+----------+
|           1 |        1 |
|           1 |        2 |
|           2 |        2 |
|           2 |        3 |
+-------------+----------+
...