Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/75: Рейтинг темы: голосов - 75, средняя оценка - 4.56
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74

Два внешних ключа на одно и то же поле

30.03.2017, 21:45. Показов 15167. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть таблица, в которой есть такие два столбца, которые указывают на один и тот же столбец в другой таблице с помощью внешнего ключа. Преподаватель сказал, что так ничего работать не будет, но в гугле подтверждения найти не смог(
Правда ли это?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2017, 21:45
Ответы с готовыми решениями:

Можно ли использовать два внешних ключа на одно и тоже поле таблицы?
Например есть таблица Пользователь с соответствующим id и таблица Сообщение. В последней должны быть внешние ключи на отправителя и...

Как взять два внешних ключа?
Есть две модели public class Tender { public int Id { get; set; } public string Name { get; set; } ...

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

14
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
30.03.2017, 22:12
Цитата Сообщение от Noname User Посмотреть сообщение
Правда ли это?
Неправда
0
Почетный модератор
 Аватар для Lord_Voodoo
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  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Noname User, а как он аргументировал? и зачем такая странная конструкция?
По заданию надо реализовать АТС. В одной из таблиц нужно хранить данные о звонках. В другой таблице хранятся данные о абонентах, у которых есть первичный ключ в виде счётчика. Таблица звонков содержит данные о исходящих звонках: столбец "кто звонит", который ссылается на таблицу абонентов, столбец "кому звонит", который ссылается на таблицу абонентов, дата, продолжительность. По заданию надо учитывать только исходящие звонки.
Таким образом получилась таблица звонков, которая имеет два внешних ключа на один и тот же столбец в таблице абонентов.
Спасибо за ответы, пойду переделывать таблицу звонков.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
30.03.2017, 23:27
Цитата Сообщение от Noname User Посмотреть сообщение
По заданию надо учитывать только исходящие звонки.
т.к. те, "кому звонит", могут и не быть абонентами этого оператора связи, то откуда ему взяться в таблице Абонентов? Поэтому "кому звонит", в общем случае просто атрибут, а не поле связи с "абонентами". Поэтому преподаватель, как всегда, прав.
0
Почетный модератор
 Аватар для Lord_Voodoo
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,
Цитата Сообщение от YuryK Посмотреть сообщение
те, "кому звонит", могут и не быть абонентами этого оператора связи, то откуда ему взяться в таблице Абонентов?
Добавлено через 4 минуты
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
YuryK, т.е. ваш оператор не работает с другими операторами?
он работает с номерами, а абоненты - это, скорей всего, Фамилия, Имя, Отчество, тарифный план, и т.д. Откуда моему оператору знать персональные данные Абонентов другого оператора?
0
Почетный модератор
 Аватар для Lord_Voodoo
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 минуты
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
ну вообще такого рода задачи решаются с помощью JOIN-ов, нет данных - не беда, пустые будут поля...
а вот это признак неправильно спроектированной базы, ИМХО
пустые поля, как раз помощью LEFT JOIN-а и получим, зачем их в БД "хранить"
0
Почетный модератор
 Аватар для Lord_Voodoo
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
Почетный модератор
 Аватар для Lord_Voodoo
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
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
я еще ничего не говорил о правильности или неправильности решения
значит мне это показалось
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
да, в принципе, ТС полностью прав
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
31.03.2017, 18:10
YuryK, и все-таки препод оказался прав: выдохнул, подумал - таки да, телефон абонента-адресата должен быть простым значением...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2017, 18:10
Помогаю со студенческими работами здесь

Два внешних ключа, ссылающихся на один первичный
Здравствуйте. Есть такая базы данных (фото), где на первичный ключ Passport number из таблицы User ссылаются два внешних Passport number...

Два внешних ключа к одной таблице Entity Framework
Здравствуйте. Возникла такая проблема, что мне нужно указать в таблице операции два внешних ключа к таблице счета (accounts), но entity не...

Логическая схема. Два внешних ключа от одной таблицы
доброго времени суток! подскажите, пожалуйста, один момент в логической схеме! есть бд поликлиники. преподаватель соединил таблицу...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru