С Новым годом! Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437

Поле, ссылка на две таблицы

30.05.2012, 23:01. Показов 3273. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица письма. У неё кроме прочего, есть два поля ид ссылки,
на получателя и отправителя. Каждое поле может быть как организация так и сотрудник.

Tabl_Letter:
id_Letter
idr_Sender
idr_Recipient
...

Tabl_Peron:
id_Person
per_Name
...

Tabl_Organization
id_Organization
org_Name
...

Выходит так что получатель может ссылаться как на Tabl_Peron, так и на Tabl_Organization
И отправитель может ссылаться как на Tabl_Peron, так и на Tabl_Organization

Как правильно организовать работа с полями idr_Sender, idr_Recipient???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2012, 23:01
Ответы с готовыми решениями:

Как слить две таблицы, выбирая поле не null?
есть две таблицы , с одинаковым количеством полей. Мне надо их соединить, прикидываю , что в тех или иных полях по строчкам ,есть нулловые...

Построитель выражений и ссылка на поле таблицы
Добрый день. Пытаюсь создать в access в построителе выражений запись типа =.!*IIf(=Истина;1;1,18) Все работает. Теперь...

Есть две таблицы остаки и потребность. Необходимо вычитать из остатков потребность и растовлять в поле itog
Добрый день. Помогите пожалуйсто. Есть две таблицы остаки и потребность. Необходимо вычитать из остатков потребность и растовлять в поле...

18
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
30.05.2012, 23:28
схему данных пересмотреть.
и организация, и частное лицо - одна сущность.
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
31.05.2012, 00:50  [ТС]
Не получается
У меня есть три типа писем
Исходящая: отправитель - сотрудник, получатель организация
Входящая: отправитель организация, получатель - сотрудник
Внутренняя: отправитель - сотрудник, получатель -сотрудник

Делать три таблицы для каждого типа письма кажется глупым, ведь поля одни и те же
Хочется как-то организовать все три типа писем в одной таблице
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
31.05.2012, 09:59
А кто мешает? Делай одну для писем, одну для отправитель/получатель
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
31.05.2012, 22:28  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Делай одну для писем, одну для отправитель/получатель
Прости... не понял, расскажи по подробнее!..
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
31.05.2012, 22:40
idr_Sender и idr_Recipient ссылаются на одну таблицу, в которой помимо остальных полей будет поле, определяющее тип.
Вообще говоря - все твои отправители-получатели суть реализация некоего супертипа "Кто-то-имеющий-отношение-к-письмам", подтипами которого и будут твои "сотрудник", "частное лицо", "организация". А уж физическую реализацию - додумай сам- вариантов есть.
ЗЫ. Вообще, рекомендую Р. Баркер «Case*Method: Моделирование взаимосвязей между сущностями» - в интернетах есть.
1
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
03.06.2012, 21:14  [ТС]
Что-то я всё равно не понимаю.
Даже если я сделаю ещё одну таблицу
Цитата Сообщение от pincet Посмотреть сообщение
idr_Sender и idr
с полями
id
idr_Отправитель
idr_Получатель
idr_Тип_Письма

Связь от полей (idr_Отправитель, idr_Получатель), от каждого идёт к двум таблицам
Tabl_Peron и Tabl_Organization

Как же быть, одно поле ссылается на две таблицы???
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
04.06.2012, 08:42
1. В Tabl_Letter можно добавить поле тип письма и, в зависимости от значения в этом поле, разруливать ссылки.
2. Или сделать две ссылки на отправителя и две ссылки на получателя
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 10:24  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
1. В Tabl_Letter можно добавить поле тип письма и, в зависимости от значения в этом поле, разруливать ссылки.
Ну это само собой, а не будет ли это противоречить нормализации и целостности данных???

Цитата Сообщение от Аватар Посмотреть сообщение
2. Или сделать две ссылки на отправителя и две ссылки на получателя
Это (на мой взгляд) плохо решение
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.06.2012, 10:58
Цитата Сообщение от xtreme Посмотреть сообщение
Связь от полей (idr_Отправитель, idr_Получатель), от каждого идёт к двум таблицам
Tabl_Peron и Tabl_Organization
Как же быть, одно поле ссылается на две таблицы???
Вот тут ты ошибаешься. Не должно быть 2 таблицы - должна быть одна.
id, type
type={Организация, частное лицо, еще-кто-то}
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 12:08  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Вот тут ты ошибаешься. Не должно быть 2 таблицы - должна быть одна.
id, type
type={Организация, частное лицо, еще-кто-то}
Есть ещё две таблицы: Tabl_Организация и Tabl_Сотрудники
Как я смогу ссылаться сразу обе

Хорошо, допустим я сделал
Tabl_Letter
id_Letter
idr_"Кто-то-имеющий-отношение-к-письмам"
...

Tabl_"Кто-то-имеющий-отношение-к-письмам"
id_"Кто-то-имеющий-отношение-к-письмам"
Type = {Организация, Сотрудник}
idr_Организация/Сотрудник

Теперь вместо двух полей в Tabl_Letter
idr_Sender
idr_Recipient

в таблице Tabl_"Кто-то-имеющий-отношение-к-письмам", поле idr_Организация/Сотрудник ссылается на две таблицы (Tabl_Организация, Tabl_Сотрудники). Для для выбора к какой из них обращаться, используется поле Type. Но связь не имеет переключателя.
Меня смущает именно связь одного поля с двумя таблицами!!!
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
04.06.2012, 12:49
Самый лучший вариант предложен pincet - две таблицу в одну.
Меня смущает именно связь одного поля с двумя таблицами
Если очень нужно, то не делать внешний ключ в базе, а целостность поддерживать программно (что плохо) или на уровне триггеров (вполне имеет право на жизнь). Но запросы будут достаточно громоздки, поскольку в них прийдется закладывать анализ типа сообщения
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.06.2012, 13:06
Цитата Сообщение от xtreme Посмотреть сообщение
в таблице Tabl_"Кто-то-имеющий-отношение-к-письмам", поле idr_Организация/Сотрудник ссылается на две таблицы (Tabl_Организация, Tabl_Сотрудники). Для для выбора к какой из них обращаться, используется поле Type. Но связь не имеет переключателя.
Меня смущает именно связь одного поля с двумя таблицами!!!
Не-не-не. Таблица одна (и организации и сотрудники)
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 13:07  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
Самый лучший вариант предложен pincet - две таблицу в одну.
Я не пойму как этот варинат реализовать. Мне кажется что проблема останется, только перекочует в другую таблицу.

Вот у меня такая бд (оставил только то, что касается вопроса) (см. рис.)
Как это сделать, то что предложил pincet, если можно на картинке ответе (я одну чистую прикрепил)
Миниатюры
Поле, ссылка на две таблицы   Поле, ссылка на две таблицы  
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 13:09  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Не-не-не. Таблица одна (и организации и сотрудники)
А у меня их две, и они содержат разные сведения (объединить не получится)
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.06.2012, 13:40
Примерно так. А если таблицы разные - почитай про реализацию супертипов.
Миниатюры
Поле, ссылка на две таблицы  
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 13:47  [ТС]
Таблицы разные
Цитата Сообщение от pincet Посмотреть сообщение
Р. Баркер «Case*Method: Моделирование взаимосвязей между сущностями»
А здесь про супер типы есть???
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.06.2012, 13:51
Это тебе так кажется.
Есть вроде. Можешь у гугла спросить.

Добавлено через 1 минуту
Как вариант http://www.intuit.ru/departmen... i/7/3.html
0
62 / 60 / 1
Регистрация: 22.12.2011
Сообщений: 1,437
04.06.2012, 13:51  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Это тебе так кажется.
А ты знаешь как их объединить, с сохранением полей???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2012, 13:51
Помогаю со студенческими работами здесь

Есть две таблицы: Должность и Работники. Необходимо сделать так, чтобы выводило в поле Edit должность работника
Возможно ли это осуществить? Проблема в том, что на каждого работника выводит только одну должность - первую (официант). Если бы можно было...

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

Слейте две линейные таблицы A и B в новую таблицу C, поставив элементы таблицы A на нечетные места, а элементы таблицы B – на четные
Помогите пожалуйста с решением. Слейте две линейные таблицы A и B в новую таблицу C, поставив элементы таблицы A на нечетные места, а...

Увеличивает значение в поле Оклад таблицы КОПИЯ_ ШТАТНЫЕ_ЕДИНИЦЫ на 20% для строк со значением «бухгалтер» в поле На
Увеличивает значение в поле Оклад таблицы КОПИЯ_ ШТАТНЫЕ_ЕДИНИЦЫ на 20% для строк со значением «бухгалтер» в поле Название должности.

Подставить значение в поле таблицы поле запроса
Здравствуйте, есть ли какая-то возможность подставить вместо поля в таблице поле с запроса? Таблица: Поставка (IDПоставка,...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru