0 / 0 / 0
Регистрация: 20.01.2021
Сообщений: 8
|
|||||||||||
1 | |||||||||||
Проблема с внешним ключом22.06.2022, 12:11. Показов 919. Ответов 12
Добрый день!
Я работаю над своим проектом по спортивной аналитике. Решил перенести готовые таблицы csv в MySQL и связать их между собой. Я так понял, они должны связываться через внешний ключ с родительской таблицей. А теперь вопрос. Можно ли сделать так, чтобы значение внешнего ключа прописывался (определялся) автоматически? Или его значение должно быть изначально внесено в загружаемую таблицу? Почему второй вариант меня не устраивает? Например у меня есть родительская таблица, которая содержит 600 строк:
0
|
22.06.2022, 12:11 | |
Ответы с готовыми решениями:
12
Добавление записи с внешним ключом в БД Проблема с внешним ключом таблицы В таблицах с внешним ключом ошибки( Не получается составить запрос с внешним ключом на одно поле |
399 / 234 / 87
Регистрация: 28.04.2022
Сообщений: 1,177
|
|
22.06.2022, 12:26 | 2 |
Коллега, искусственный интеллект ещё не настолько проник в IT, как об этом трубят из всех утюгов.
У вас таблица all_fightings должна содержать ID записей из таблицы all_events. Сейчас этого нет. Я не знаю вашу задачу, но могу предположить, что надо ещё подумать над архитектурой. Может что-то надо изменить.
1
|
0 / 0 / 0
Регистрация: 20.01.2021
Сообщений: 8
|
||||||
22.06.2022, 12:49 [ТС] | 3 | |||||
Нет, то что там не хватает столбца, я знаю. Я пытался его добавлять после созжания таблицы:
0
|
625 / 267 / 116
Регистрация: 12.04.2022
Сообщений: 958
|
|
22.06.2022, 12:56 | 4 |
0
|
0 / 0 / 0
Регистрация: 20.01.2021
Сообщений: 8
|
||||||
22.06.2022, 13:21 [ТС] | 5 | |||||
Я спарсил таблицы в виде csv файлов. Теперь хочу загрузить их в локальный MySQL, чтобы делать выборки и т.д. Их нужно связать между собой. Как я понимаю, это делается через внешние ключи. Я создал родительскую таблицу
и начал плясать от нее. Встал вопрос о внешнем ключе в следующей таблице:
Понял, что им должен выступать но без значений он бесполезен. Данных очень много, и чтобы не переписывать парсер или писать дополнительный скрипт, я понадеялся что есть метод, который позволит автоматически определять значение внешнего ключа, ссылаясь например на другие данные которые есть, как в родительской так и дочерней таблице. Вопросы: Есть такой метод, или мне придется изначально задавать значения внешнего ключа, а потом привязывать его к родительской таблице через
Добавлено через 2 минуты Может вообще связваться с ключами была плохая идея, и эти таблицы можно связать по другому?
0
|
625 / 267 / 116
Регистрация: 12.04.2022
Сообщений: 958
|
||||||
22.06.2022, 13:37 | 6 | |||||
Сообщение было отмечено AndrewNovi как решение
Решение
Вы делаете всё правильно.
Да, можно, например использовать естественный PK из таблички all_events. Тогда, DDL изменится на:
1
|
0 / 0 / 0
Регистрация: 20.01.2021
Сообщений: 8
|
|
22.06.2022, 14:04 [ТС] | 7 |
Скопировал с примера добавления внешнего ключа, и не стал удалять. Так понял, что он нужен в случае удаления данных из родительской таблицы. Решил, что не повредит)))
Хорошо, попробую поискать решение естественных ключах. Спасибо за совет.
0
|
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
22.06.2022, 14:36 | 8 |
Для справки. БД вполне может функционировать без FK вообще. Лично я, добавляя новую таблицу, сначала не создаю FK, поскольку там могут быть свои сложности. И только после того, как процедуры, работающие с этой таблицей, отлажены, создаю FK. Поскольку целостность данных можно поддерживать не только с пом. FK, но и с пом. приложения или триггеров.
0
|
625 / 267 / 116
Регистрация: 12.04.2022
Сообщений: 958
|
|
22.06.2022, 16:25 | 9 |
Повредит ещё как, такое удаление приведёт к тому, что удалив запись из справочника all_events удалятся все связанные по FK записи из all_fighting.
Добавлено через 1 час 27 минут Это до тех пор пока прилож. - это единственная прога имеющая доступ к БД. Вообщем, не надо целостность в БД поддерживать через приложение, потом будет очень больно
0
|
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
22.06.2022, 16:44 | 10 |
Хех... У Oracle есть такая ERP-система, OeBS называется. Там вообще мало FK, а в большинстве случаев целостность поддерживается как раз через приложения (для справки - в максимальной конфигурации 10000 таблиц). А вроде авторитетная контора...
0
|
625 / 267 / 116
Регистрация: 12.04.2022
Сообщений: 958
|
|
23.06.2022, 08:16 | 11 |
Дык, вроде уже написАл:
+ если эта прога предоставляет свой API для доступа к данным. Так же, архитектура проектирования вынуждает разработчика упрощать БД до уровня "таблиц/файлов dbf".
0
|
1652 / 1151 / 173
Регистрация: 23.07.2010
Сообщений: 6,859
|
|
23.06.2022, 11:19 | 12 |
это уже другой совсем вопрос распределенный доступ. тут рили нужен дополнительный слой
0
|
625 / 267 / 116
Регистрация: 12.04.2022
Сообщений: 958
|
|
23.06.2022, 11:30 | 13 |
Не понял, причем тут распределенный доступ?
Речь идёт о многопользовательском доступе (клиент-сервер, не важно как архитектурно решенный), который по определению использует промежуточный слой (не путать с N-Tier Architecture) в виде ODBC/DB Provider.
0
|
23.06.2022, 11:30 | |
23.06.2022, 11:30 | |
Помогаю со студенческими работами здесь
13
Может ли первичный ключ одновременно являться внешним ключом? Получение данных из нескольких таблиц с составным внешним ключом Ошибка #150 при создании таблицы с внешним ключом Поле со списком для работы с внешним ключом + фильтрация по значению Обработка заказа с внешним ключом Заполнение таблицы с внешним ключом Добавление в таблицы объединенные внешним ключом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как обучить нейросеть создания картинок на Python
bytestream 24.01.2025
В эпоху цифровых технологий искусственный интеллект становится неотъемлемой частью творческого процесса. Особое место в этой области занимает разработка и обучение нейронных сетей для создания. . .
|
Как обучить нейросеть генерации текста на Python
bytestream 24.01.2025
В современном мире искусственный интеллект и машинное обучение становятся неотъемлемой частью многих технологических решений. Одной из наиболее интересных и востребованных задач в этой области. . .
|
Машинное обучение на Python
bytestream 24.01.2025
Введение в машинное обучение на Python
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей информационных технологий, которая позволяет компьютерным системам. . .
|
Как удалить вирус-майнер с компьютера
hw_wired 24.01.2025
Вирусы-майнеры стали одной из наиболее серьезных угроз для пользователей компьютеров. Эти вредоносные программы тайно используют вычислительные ресурсы зараженного устройства для добычи криптовалюты. . .
|
Что такое веб-сервер, для чего он нужен и как работает
bytestream 24.01.2025
В современную эпоху цифровых технологий веб-сервер является фундаментальным компонентом интернет-инфраструктуры, обеспечивающим функционирование множества онлайн-сервисов и веб-сайтов. Этот. . .
|
Как в цикле for перебрать все элементы в словаре в Python
bytestream 24.01.2025
Словари в Python представляют собой мощные структуры данных, которые позволяют хранить информацию в формате ключ-значение. Эта особенность делает их незаменимыми при работе с данными, где требуется. . .
|
Как отменить rebase в Git
hw_wired 24.01.2025
Git rebase представляет собой мощный инструмент для управления историей коммитов в системе контроля версий Git. Этот механизм позволяет разработчикам изменять последовательность, комбинировать или. . .
|
Как поменять цвет input placeholder с помощью CSS
bytestream 24.01.2025
В веб-разработке оформление элементов пользовательского интерфейса играет ключевую роль в создании привлекательного и интуитивно понятного дизайна. Особое внимание уделяется формам ввода данных, где. . .
|
Как перебрать все значения в перечислении (enum) в C#
bytestream 24.01.2025
Перечисление (enum) в языке программирования C# представляет собой специальный тип данных, который позволяет определить набор именованных констант. Этот мощный инструмент особенно полезен, когда. . .
|
Как обойтись без проверки на null, чтобы избежать NullPointerException в Java
bytestream 24.01.2025
NullPointerException (NPE) является одним из самых распространенных исключений в Java, создающих серьезные проблемы при разработке программного обеспечения. Данное исключение возникает при попытке. . .
|
Что лучше использовать в href ссылок в JavaScript: "#" или "javascript:void(0)"
bytestream 24.01.2025
При разработке веб-приложений важную роль играет правильное использование HTML-ссылок в сочетании с JavaScript. Одним из ключевых аспектов является выбор корректного значения атрибута href для. . .
|
Как узнать индекс элемента списка по его значению в Python
hw_wired 24.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только манипулировать элементами списка, но и определять их точное местоположение. Индекс элемента представляет собой. . .
|