powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организовать связь записей в одной таблице
25 сообщений из 40, страница 1 из 2
Организовать связь записей в одной таблице
    #40075827
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть таблица Человек. У каждого человека есть множество дружеских и деловых связей из таких же людей из этой же таблицы. Как правильно схематично нарисовать эту связь? Нужны ли дополнительные таблицы и как будет организована связь между ними?
Спасибо!
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075828
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычная связь M:N, сразу из учебника. Да, в физической модели будет дополнительная таблица.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075829
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Сложность в том, что таблица одна. Как сделать m:n для одной таблицы?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075831
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В логической модели - кривая (кольцевая) связь. В физической - таблица связи с двумя FK на
главную. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075832
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица "лицо" у него ключевое поле лицо_id
Таблица "Связь" у не ключевое поле связь_id и два поля "лицо1_id" и "лицо2_id"

Поля "лицо1_id" и "лицо2_id" связаны с лицо_id?
Так?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075833
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SilbermannПоля "лицо1_id" и "лицо2_id" связаны с лицо_id?
Так?

Да. Разве это не самоочевидно?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075834
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю в access, он мне пишет, что не сможет обеспечить целостность данных
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075835
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так делай в приличной СУБД. MS SQL, например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075836
Silbermann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Нет выбора, к сожалению
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075852
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silbermann
Я делаю в access, он мне пишет, что не сможет обеспечить целостность данных

Значит, есть ссылка на отсутствующую строку. Не?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075855
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, просто аксесс такой тупой, что не умеет в foreign key.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075909
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Не, просто аксесс такой тупой, что не умеет в foreign key.

Что-то не понял.
Можно попа дробнее объяснить?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075910
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silbermannон мне пишет, что не сможет обеспечить целостность данных

Куда уж подробнее?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075918
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Silbermannон мне пишет, что не сможет обеспечить целостность данных

Куда уж подробнее?..

Вроде всегда можно задать целостность и с внешним ключом, если все записи в родительской таблице присутствуют.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075920
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silbermann
Я делаю в access, он мне пишет, что не сможет обеспечить целостность данных

Вы бы кусочек БД здесь выложили с двумя внешними ключами.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075929
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silbermann
Сложность в том, что таблица одна. Как сделать m:n для одной таблицы?

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

Silbermann
Я делаю в access,

Никак, физически будет еще пару таблиц
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075931
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Silbermann
Сложность в том, что таблица одна. Как сделать m:n для одной таблицы?

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

Silbermann
Я делаю в access,

Никак, физически будет еще пару таблиц

Разве еще всего лишь одной не обойтись?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075932
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silbermann
Здравствуйте. Есть таблица Человек. У каждого человека есть множество дружеских и деловых связей из таких же людей из этой же таблицы. Как правильно схематично нарисовать эту связь? Нужны ли дополнительные таблицы и как будет организована связь между ними?
Спасибо!


Делаю в Access, получаю три таблицы: Люди, Связи, ТипыСвязи.
В Люди два поля - face_id (счётчик, ключевое поле) и face_name,
В Связи - четыре - Код (счётчик, ключевое поле), Лицо1 (числовое, длинное целое), Лицо2 (числовое, длинное целое), ТипСвязи (числовое, длинное целое
В ТипыСвязи - КодСвязи (счётчик, ключевое поле) и Связь (короткий текст)

Надеюсь, схема связей прикрепится нормально, и не придётся ничего объяснять. Код SQL-запроса дублирует схему связей между таблицами.

SELECT Связи.Код, ТипыСвязи.Связь, Люди.face_name, Люди_1.face_name
FROM ТипыСвязи INNER JOIN (Люди INNER JOIN (Люди AS Люди_1 INNER JOIN Связи ON Люди_1.face_id = Связи.Лицо2) ON Люди.face_id = Связи.Лицо1) ON ТипыСвязи.КодСвязи = Связи.ТипСвязи;
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075933
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обращаю внимание, что таблица Люди на схеме и в запросе присутствует в двух экземплярах - отдельно для поля Лицо1 и отдельно для поля Лицо2 таблицы Связи.
Собственно, таблица Связи отвечает за отношение многие-ко-многим людей, а ТипыСвязи - для нормализации данных.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075934
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,
Таблица ТипыСвязи не очень-то и нужна. Если только типов связи будет ну ОЧЕНЬ много.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075935
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП
DaniilSeryi,
Таблица Тип_Связи не очень-то и нужна. Если только типов связи будет ну ОЧЕНЬ много.


Да я и не спорю. Привычка просто нормализовать то, что можно нормализовать.

Ну и своим студентам за её отсутствие снял бы балл, если бы задание давал на разработку такой БД. Ну или, наоборот, добавил бы - смотря насколько в предмет углубиться успели.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075936
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В такой схеме есть проблема с "групповой связью", когда связаны более чем два человека, и
со связью без иерархии когда при поиске неважно будет ли лицо искомое первым или вторым.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075939
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

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


Групповая связь - это уже добавлять сущности групп придётся, хм? И взаимоотношения групп между собой заодно.
А связь без иерархии - по идее, эта проблема решается в запросе поиска добавлением условия OR, нет?
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075946
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi
елаю в Access, получаю три таблицы: Люди, Связи, ТипыСвязи.


Так для студентов с акцессом будет норм, пока с клиентом болтал, не успел выложить свой нарисованный на скорую руку вариант, который близнец вашему оказался...
Несколько дополнений от меня:
- Просто таблица Связи без ничего - избыточна, это как Петя+Коля написанное на заборе (ни о чем)...
- Тип связи несколько добавляет смысла таблице Связи...
- Возможно в ней будут и дополнительные поля типа период (для брака например), документ регламентирующий отношения. ну и т.д.
...
Рейтинг: 0 / 0
Организовать связь записей в одной таблице
    #40075950
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

тогда уж не избыточна, а недостаточна. :-) Ну а периоды и прочее - это уже добавлять по вкусу, необходимости, ТЗ и т.п.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Организовать связь записей в одной таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]