2013-09-17 2 views
0

У меня есть база данных SQL, которая использует MS Access в качестве front-end и закодирована с помощью VB. Данные импортируются ежедневно из таблицы Excel в виде:Создание структуры базы данных, где один столбец имеет несколько значений?

Journal Дата, И.О. счета, сумма, Опубликовано Дата, линия Описание, идентификатор пользователя, дата Проверено, Ваучер

Данные Ваучер отформатирован в таблицу Excel например: 1111111; 2222222; 3333333

Ваучер может иметь как можно больше номеров ваучеров (в любом месте от 1 до 13 различных чисел), и каждое число разделяется точкой с запятой. Кроме того, каждый номер может отличаться по физической длине. Затем мне нужно связать эти ваучерные номера с несколькими разными таблицами. Структура данных, которая была на месте, когда я взял на себя этот проект, сохранил ваучер в форме с разделителями с запятой и проанализировал строку для ссылки на другие таблицы. Я готов обновить эту базу данных, и я не хочу хранить данные, подобные этому формату, потому что я знаю, что это нарушает 1NF.

Я знаю, что я, вероятно, должен использовать внешние ключи, но я не уверен, как с различными данными ваучера. У меня есть возможность синтаксически анализировать данные с помощью VB в Access, когда она поступает из Excel, я просто не знаю, как ее хранить, чтобы связать мои таблицы.

Цель проекта - сопоставить все, что связано с каждым отдельным ваучером, и посмотреть, совпадают ли суммы. Сейчас процесс занимает от 5 до 10 минут, чтобы разделить ваучеры и сравнить данные между таблицами.

Дайте мне знать, если вам нужна дополнительная информация. Любой совет будет принят во внимание. Спасибо!


Edit- Позвольте мне быть более ясным:

Вот пример ваучера: 2988670; 2990020; 2989130; 2991597; ONL112382

Есть несколько записей в таблице (назовем ее T1) с этим ваучером с разным количеством. Каждое из числовых значений (за исключением номера ONL) соответствует другой таблице (назовите ее T2). Если каждый из этих 4 чисел находится в T2, они называются «Matching». Если они совпадают, а сумма сумм в T2 равна сумме сумм в T1, они «соответствуют без разницы».

Иногда Ваучер выглядит следующим образом: ED414596

В этом случае, я должен сравнить это значение с совершенно другой таблицы (назовем его T3). Он включает в себя тот же процесс согласования, что и выше.

* Давайте просто скажем, что ваучер встречается по-разному, и его нужно сравнить с несколькими таблицами.

+2

Что вы хотите сказать? Если ваш вопрос «должен ли я», ответ, вероятно, нет. Разделите данные ваучера на отдельные значения и поместите их в свою таблицу, привязанные к таблице журнала с помощью внешнего ключа. –

+1

У вас может быть 13 полей «ваучер», или вы можете получить таблицу поиска с номерами «FK_ID» и «Voucher». Оба предпочтительнее хранить несколько значений в одном поле, причем последнее предпочтительнее первого. –

+0

Итак, таблица ваучеров? Как насчет ваучера с 13 различными номерами? Нужно ли мне 13 разных столбцов? –

ответ

2

Ваш стол для ваучеров будет иметь voucherID и voucherNumber, это позволило бы повторить столько раз, сколько необходимо, с помощью voucherID. voucherID будет внешним ключом из вашей первой таблицы, а два столбца будут PK для этой таблицы.

+2

Так вот: ID 1 - 1111111, ID 1 - 2222222, ID 1 - 3333333 для ваучера 1111111; 2222222; 3333333? Затем, когда я храню ваучер в моем главном столе, я бы сохранил его как 1? –

+0

@ Jacob Dye, да, это правильно. – dcaswell

+0

Хорошо, это похоже на хорошую идею. Не могу поверить, что я не мог думать об этом. Я буду держать этот пост обновленным. Благодаря! –

Смежные вопросы