Смущен реализацией соединительной таблицы - PullRequest
0 голосов
/ 30 мая 2019

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

В настоящее время я разрабатываю базу данных MS Access, которая будет использоваться для управления контрактами на работу со спортивными тренерами. Реализация направлена ​​на миграцию серии данных, которые всегда хранились в плоских базах данных Excel.

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

Table A имеет около 200 инструкторов, каждый из которых идентифицируется по своему собственному идентификационному номеру и своему имени, которое используется для управления взаимоотношениями с другими таблицами (такими как социальное обеспечение, номера телефонов, адреса и т. Д.). ID является ключом. Как показано в примере, он состоит из трех полей.

[Trainer_ID] [Name]  [Last_Name]
1            Pedro   Pérez
2            María   Gómez
3            Hollman Vivas

Table B - это список (в настоящее время 20) видов спорта, для которых мы обрабатываем контракты. Он имеет поле с автонумерацией в качестве ключа и название каждого вида спорта в виде короткого текста (используя только строчные символы, например). Список может быть дополнен новыми видами спорта в зависимости от спроса и количества инструкторов.

[Sport_ID] [Sport_Name]
a          Soccer
b          Basketball
c          Tennis

Наконец, Table C хранит специальные сертификаты, которые есть у каждого тренера, с идентификатором тренера в качестве ключа. В версии Excel это имеет четыре поля.

[Trainer_ID] [Sport1] [Sport2]   [Sport3] [Sport4)
1            Soccer
2            Tennis   Soccer
3            Tennis   Basketball Soccer

Все данные в Table C шифруются вот так.

Как видите, у каждого тренера есть один или несколько сертификатов, которые приводят к почти бесконечным комбинациям (например, 1abc 2c 3ac). Не говоря уже о том, что в конечном итоге у нас может быть тренер с пятью или более сертификатами, и база данных не разработана с учетом этого.

Мне нужно найти способ разобраться в этих данных в среде базы данных MS Access, но я не могу придумать лучший способ сделать это, учитывая, что из-за огромного количества информации, которую мы обрабатываем, нам нужно, чтобы данные можно было легко обновлять с помощью массовой загрузки из файлов .csv, но также можно обновлять с помощью форм, которые используются для ручных проверок.

Его необходимо использовать в запросах для поиска конкретных компетенций, когда это необходимо.

Первым делом я попытался оставить данные такими, какими они были (с четырьмя спортивными площадками), но это оказалось беспорядком.

Затем многозначные поля, которые были очищены через 10 минут, потому что мое исследование по этой теме показывает, что это нестандартная реализация и не может быть обновлено путем массовой загрузки на базу.

Дальнейшие исследования привели меня к соединительным таблицам, но я до сих пор не понял, как структурировать вещи, учитывая, что большинство примеров в Интернете основаны на двух таблицах, а не на трех.

Я думал о том, чтобы иметь таблицу сертификации (Table C) без ключевых полей и просто хранить фрагментированную информацию с повторным использованием [Trainer_ID], но я боюсь, что это отсутствие нормализации может привести к проблемам в будущем.

Как я уже говорил ранее, база данных должна иметь возможность хранить, отображать и обновлять квалификации каждого тренера согласованным образом, независимо от того, сколько сертификатов они имеют.

1 Ответ

1 голос
/ 30 мая 2019

Нет ничего плохого в вашей идее использования таблицы сертификатов с повторяющимися идентификаторами тренера.Это не избыточные данные, потому что в таблице также будет указан Certification_ID, который будет действовать как первичный ключ.Ваши два других поля будут внешними ключами из двух других таблиц.

Промежуточные (Junction-таблицы) таблицы ОЧЕНЬ распространены в крупномасштабных базах данных, которые работают с многомиллиардными корпорациями, поэтомуНе беспокойтесь.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...