Я хочу нормализовать промежуточную таблицу в две таблицы. Одно из полей входных данных содержит несколько значений, разделенных точкой с запятой.
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:M, но эти значения могут повторяться в других записях, поэтому способ, который я наметил выше, по-прежнему приведет к тому, что значение1, например, будет указано в этой нормализованной таблице несколько раз.
Имеет ли значение порядок значений в MULTIVALUEDFIELD?


Похоже, у вас на самом деле есть отношения «многие ко многим»; filename может относиться ко многим singlevalues, а singlevalues может встречаться во многих filenames.
Традиционный способ представить это с помощью сводной таблицы, состоящей из ссылок внешнего ключа на первичные ключи 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 |
+-------------+----------+
Вы, сэр, и умны, и умопомрачительно привлекательны. Большое спасибо!
Кто я такой, чтобы спорить? :) Рад, что это помогло.
Это отношения 1:М или М:Н? Если 1:М, то правильно