Как нормализовать таблицу с многозначным полем?

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

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:М, то правильно

Lukasz Szozda 28.06.2019 15:26

Вы имеете в виду, как один ко многим? отдельные записи 1:M, но эти значения могут повторяться в других записях, поэтому способ, который я наметил выше, по-прежнему приведет к тому, что значение1, например, будет указано в этой нормализованной таблице несколько раз.

will 28.06.2019 15:33

Имеет ли значение порядок значений в MULTIVALUEDFIELD?

HABO 28.06.2019 20:05
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
3
366
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, у вас на самом деле есть отношения «многие ко многим»; 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 |
+-------------+----------+

Вы, сэр, и умны, и умопомрачительно привлекательны. Большое спасибо!

will 28.06.2019 16:33

Кто я такой, чтобы спорить? :) Рад, что это помогло.

Eric Brandt 28.06.2019 18:30

Другие вопросы по теме