|
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74
|
|
Два внешних ключа на одно и то же поле30.03.2017, 21:45. Показов 15167. Ответов 14
Метки нет (Все метки)
Здравствуйте!
Есть таблица, в которой есть такие два столбца, которые указывают на один и тот же столбец в другой таблице с помощью внешнего ключа. Преподаватель сказал, что так ничего работать не будет, но в гугле подтверждения найти не смог( Правда ли это?
0
|
|
| 30.03.2017, 21:45 | |
|
Ответы с готовыми решениями:
14
Можно ли использовать два внешних ключа на одно и тоже поле таблицы? Как взять два внешних ключа? Два внешних ключа ссылаются на одну таблицу |
|
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
|
|
| 30.03.2017, 22:12 | |
|
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 30.03.2017, 22:17 | |
|
Noname User, а как он аргументировал? и зачем такая странная конструкция?
0
|
|
|
38 / 38 / 25
Регистрация: 14.12.2009
Сообщений: 202
|
|
| 30.03.2017, 22:25 | |
|
Lord_Voodoo, это применяется в объектным моделях БД. Для систем где важен быстрый SELECT. Связь к таблице Objects.
Noname User, преподавать не прав, прочитайте про модель Тенцера.
0
|
|
|
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74
|
||
| 30.03.2017, 22:27 [ТС] | ||
|
Таким образом получилась таблица звонков, которая имеет два внешних ключа на один и тот же столбец в таблице абонентов. Спасибо за ответы, пойду переделывать таблицу звонков.
0
|
||
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
||
| 30.03.2017, 23:27 | ||
0
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 31.03.2017, 07:40 | |
|
smatch, да, в принципе, ТС полностью прав, а препод пусть объяснит свое утверждение. Да и не брался я утверждать то же самое, что этот загадочный препод, просто для себя выяснял причину решения... у меня обычно основная таблица по итогу получается набором внешних ключей по своей сути, а системы работают на предприятиях
Добавлено через 1 минуту YuryK, т.е. ваш оператор не работает с другими операторами? Ну тогда препод прав, предприятие просто не выживет, а тогда зачем тратить человекочасы на всякие глупости... И все же обращаюсь к ТС-у: Noname User, а вы не могли бы у преподавателя тактично узнать причину замечания...
0
|
|
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|||
| 31.03.2017, 07:45 | |||
|
Lord_Voodoo,
0
|
|||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 31.03.2017, 07:47 | |
|
YuryK, ну вообще такого рода задачи решаются с помощью JOIN-ов, нет данных - не беда, пустые будут поля... и с другой стороны, оператору не важны сторонние абоненты, он плату за услуги берет со своих... ну а про механизмы работы операторов между собой я не знаю, но , думаю, это и не особо важно в данной задаче
0
|
|
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
||
| 31.03.2017, 07:50 | ||
|
Мы пока знаем только про 2 таблицы и по одному атрибуту в них. Если бы увидели всю схему, может были бы того же мнения, что и преподаватель
Добавлено через 2 минуты пустые поля, как раз помощью LEFT JOIN-а и получим, зачем их в БД "хранить"
0
|
||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 31.03.2017, 07:55 | |
|
YuryK, ну здесь уже все проще... зачем вам знать, куда звонил ваш абонент? Такое нужно в тарифных планах: "Звонит, ах какому человеку, ему можно и на халяву"... Вы же тарифицируете сам факт звонка, поэтому данные об абоненте могут быть (звонок внутри сети оператора), а могут и не быть, если у вас нет договора о предоставлении фактических данных его абонентов (по-моему, это нарушение закона о личных данных, ИМХО)... это не всегда признак некорректной БД, могут быть нюансы.
Именно поэтому и хотел услышать версию самого препода... это же знания, а их черпать надо отовсюду... я еще пока ничего не утверждал ни в пользу препода, ни в пользу ТС... пытаюсь понять
0
|
|
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
| 31.03.2017, 08:05 | |
Сообщение было отмечено Lord_Voodoo как решение
Решение
Lord_Voodoo, еще раз. Для того, чтобы мой абонент позвонил абоненту другой сети по схеме TC я должен занести номер того абонента в свою ИС также, как и номер абонента своей сети: внести его в таблицу Абоненты, ничего не зная ( а значит оставляя пустыми все поля, кроме номера). И это вы считаете не является ошибкой структуры БД, а нормальным поведением? Я думаю иначе. Более того, что из себя представляют сущности Абонент и Звонки, знают только ТС и преподаватель, а мы только гадаем
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 31.03.2017, 08:29 | |
|
YuryK, вот именно об этом я вам и говорю, мы видим вершину айсберга... я еще ничего не говорил о правильности или неправильности решения... мы с вами спорим пока что беспредметно. и я согласен с тем, что структура БД вынуждает оператора работать только внутри своей сети, а со сторонних по сути даже фиксироваться не будут, если абонент не известен системе данного оператора...
0
|
|
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
| 31.03.2017, 08:52 | |
|
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 31.03.2017, 18:10 | |
|
YuryK, и все-таки препод оказался прав: выдохнул, подумал - таки да, телефон абонента-адресата должен быть простым значением...
0
|
|
| 31.03.2017, 18:10 | |
|
Помогаю со студенческими работами здесь
15
Два внешних ключа, ссылающихся на один первичный
Логическая схема. Два внешних ключа от одной таблицы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|