powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / циклические связи в БД
25 сообщений из 345, страница 1 из 14
циклические связи в БД
    #37819816
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При проектирование БД столкнулся с множеством противоречивых мнений о том, могут ли (или является ли плохим признаком) существовать в БД циклические связи (идентифицирующие, не идентифицирующие). Хотелось бы услышать много мнений и аргументов в поддержку того или иного довода.
Вот простой пример т.н. циклической связи:
Таблица игры, в ней содержится информация о всех играх (содержит только PK GameID).
Таблица игроки - в ней содержится информация о всех игроках учавствующих в ОДНОЙ игре (содержит FK GameID).
Таблица раунды - в ней содержатся ВСЕ раунды ОДНОЙ игры (содержит FK GameID)
Таблица Ставки - в ней хранятся все ставки, сделанные любым из игроков в любом раунде любой игры. (содержит FK PLayerID, FK RoundID).
Является ли такая архитектура правильной и/или желательной/нежелательной ?
...
Рейтинг: 0 / 0
циклические связи в БД
    #37819849
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> При проектирование БД столкнулся с множеством противоречивых мнений о том, могут
> ли (или является ли плохим признаком) существовать в БД циклические связи

Могут, не является плохим признаком.

> (идентифицирующие,

НЕ МОГУТ по определению.

не идентифицирующие).

Могут.

Хотелось бы услышать много мнений и
> аргументов в поддержку того или иного довода.

Тут не может особенно быть никаких аргументов. Надо тебе по предметной
области циклические связи -- делай. И есть случаи, когда их просто нельзя
сделать (2 и более идентифицирующие связи не могут быть циклическими,
одна из связей цикла должна быть неидентифицирующей и допускать NULL,
иначе ты данные просто не вставишь).

> Вот простой пример т.н. циклической связи:
> Таблица игры, в ней содержится информация о всех играх (содержит только PK GameID).
> Таблица игроки - в ней содержится информация о всех игроках учавствующих в ОДНОЙ
> игре (содержит FK GameID).
> Таблица раунды - в ней содержатся ВСЕ раунды ОДНОЙ игры (содержит FK GameID)
> Таблица Ставки - в ней хранятся все ставки, сделанные любым из игроков в любом
> раунде любой игры. (содержит FK PLayerID, FK RoundID).

А где ты тут нашёл циклические ссылки ? Их тут нет, или я что-то не так понял.
У тебя направление ссылки К Bets (ставки). Вот если бы одна из связей на Bets
была бы направлена в другую сторону, был бы цикл.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37819895
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сталкивался и с такими мнениями (преподавателей), что не важно, в какую сторону идут связи, если они образуют "круг", то это уже плохо. Моё, конечно, мнение, что в данном примере всё красиво, нет необходимости что-либо переделывать или пытаться сделать лучше
...
Рейтинг: 0 / 0
циклические связи в БД
    #37819991
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pashalost,
В теории БД нет понятия "циклические связи", "идентифицирующие связи", "не идентифицирующие связи". Если же это понятия "реляционной теории", то напомню, что связи в реляционной модели принципиально не поддерживаются. Сообщите это своим преподавателям. Чтобы они не морочили голову, по крайней мере, следующим поколениям:)
А у Вас откуда такая жестокость - уничтожать игроков, чтобы они не имели возможности поучаствовать еще в одной игре?:) Или Игрок - это не Человек?
Типы сущностей нужно именовать в единственном числе.
И почему Вы используете иностранный язык - тоже преподаватели научили?:)
...
Рейтинг: 0 / 0
циклические связи в БД
    #37819994
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> столкнулся с множеством противоречивых мнений

Не читайте то, что пишут на заборах. Любые циклические связи - это ошибки проектирования.

> Вот простой пример

Это хороший пример плохой структуры. Либо задача поставлена криво, либо - судя по вопросу, это вероятнее - безобразна реализация.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820016
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут нет циклов
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820114
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредятина, (ржу немогу с ника) с чего вы взяли, что я уничтожаю игроков после игры ? Данный пример маленький кусочек, вырванный из моего проекта. Мне ПОЗАРЕЗ необходимо запомнить СОСТАВ игроков в каждой игре. К сведению, состав игроков от игры к игре может изменяться, поэтому его и храним
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820145
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621, обоснуйте ваше суждение, почему не должно с структуре БД существовать "циклических связей" и дайте точную формулировку т.н. циклической связи. Поясню задачу, которую должна выполнять БД. Необходимо собирать статистику всех ставок сделанных игроками во время игры. Важно знать, кто, в каком раунде, и в какой игре сделал ставку (размер ставки тоже необходимо знать). В одной игре учавствует несколько игроков (2-10). Игра состоит из нескольких раундов (1-5). Состав игроков от игры к игре может изменится. Попробуйте(если вас не затруднит) прежложить свой вариант решения поставленной задачи
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820195
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Я сталкивался и с такими мнениями (преподавателей), что не важно, в какую
> сторону идут связи, если они образуют "круг", то это уже плохо.


ТЫ НЕ ТАК ПОНЯЛ.

В БД все связи направленные, соотв. цикл надо искать как в орграфе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820202
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В теории БД нет понятия "циклические связи", "идентифицирующие связи", "не
> идентифицирующие связи". Если же это понятия "реляционной теории", то напомню,
> что связи в реляционной модели принципиально не поддерживаются. Сообщите это
> своим преподавателям. Чтобы они не морочили голову, по крайней мере, следующим
> поколениям:)

Ну, это заявления подстать нику, это мы пропускаем...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820205
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 05/31/2012 05:43 PM, guest_20040621 wrote:

> Не читайте то, что пишут на заборах. Любые циклические связи - это ошибки
> проектирования.

Интересно, почему пользователь "Бредятина" не зналогинился ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820217
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 05/31/2012 06:33 PM, pashalost wrote:
> guest_20040621, обоснуйте ваше суждение, почему не должно с структуре БД
> существовать "циклических связей" и дайте точную формулировку т.н. циклической
> связи.

Да не обращай ты внимание на гестов. Это ж гест, ему соврать -- не дорого взять.

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

Ещё раз, проясни для себя -- У ТЕБЯ НЕТ ЦИКЛОВ в твоей текущей БД.
Тебе не о чем беспокоиться.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820227
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ БД все связи направленные, соотв. цикл надо искать как в орграфе.Хм, связи 1:1 вроде как ненаправленные. Хотя используются довольно редко.

По сабжу - один из способов хранение иерархий id+parent_id уже сам по себе содержит цикл. Что ж теперь, из-за какого-то препода отказываться от такого способа?
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820310
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest = troll ? :)
Всё больше склоняюсь к мнению, что не все люди (даже из числа тех, кто знает, что такое SELECT * FROM A JOIN B WHERE ...) до конца понимают, что такое циклическая связь.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820324
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В БД все связи направленные, соотв. цикл надо искать как в орграфе.
>
> Хм, связи 1:1 вроде как ненаправленные. Хотя используются довольно редко.

Связь -- это FOREIGN KEY, как он может быть ненаправленный ?
Не, ну конечно при 1:1 ты можешь сделать два встречных FK, только
записи как вставлять потом ?


> По сабжу - один из способов хранение иерархий id+parent_id уже сам по себе
> содержит цикл. Что ж теперь, из-за какого-то препода отказываться от такого способа?

Там цикл разорваный (т.е. допустимый). Разорваный тем, что связь необязательная,
parent_id всегда NULL-able.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820334
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> почему не должно с структуре БД существовать "циклических связей"

Потому, что это свидетельствует о явной ошибке. Почему это ошибка - читайте Дейта.

> Поясню задачу

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

Описанный вами вариант прост:

игроки,
игра,
состав участников игры (игра, игроки),
раунд (игра, шаг, игрок, ставка) или
раунд (игра, шаг), ставка (игрок, раунд, шаг ставки, номинал ставки), если в одном раунде игрок может делать несколько ставок.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820344
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНе, ну конечно при 1:1 ты можешь сделать два встречных FK, только
записи как вставлять потом ?1) в некоторых СУБД FK могут быть отложенными и проверяются в момент commit-а.
2) в некоторых СУБД FK нет вообще, но это не мешает установить логическую связь между таблицами.


MasterZivТам цикл разорваный (т.е. допустимый). Разорваный тем, что связь необязательная,
parent_id всегда NULL-able.Хм, пытаюсь представить себе "неразорванный" цикл. Что-то ничего не приходит в голову, кроме совсем уж абсурдных вариантов...
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820402
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pashalostБредятина, (ржу немогу с ника) с чего вы взяли, что я уничтожаю игроков после игры ? Данный пример маленький кусочек, вырванный из моего проекта. Мне ПОЗАРЕЗ необходимо запомнить СОСТАВ игроков в каждой игре. К сведению, состав игроков от игры к игре может изменяться, поэтому его и храним
Я так и понял:) что Игрок - это участие человека в игре...
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820407
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
> В теории БД нет понятия "циклические связи", "идентифицирующие связи", "не
> идентифицирующие связи". Если же это понятия "реляционной теории", то напомню,
> что связи в реляционной модели принципиально не поддерживаются. Сообщите это
> своим преподавателям. Чтобы они не морочили голову, по крайней мере, следующим
> поколениям:)

Ну, это заявления подстать нику, это мы пропускаем...

Не обманывайте себя:) Это импульс к размышлению, только дурак может пропустить:)
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820409
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivOn 05/31/2012 05:43 PM, guest_20040621 wrote:

> Не читайте то, что пишут на заборах. Любые циклические связи - это ошибки
> проектирования.

Интересно, почему пользователь "Бредятина" не зналогинился ?

Я, Чернышев Андрей Ленидович, не раз логинился. Сразу же блокируют. Здесь же БД нельзя обсуждать:)
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820413
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pashalostguest = troll ? :)
Всё больше склоняюсь к мнению, что не все люди (даже из числа тех, кто знает, что такое SELECT * FROM A JOIN B WHERE ...) до конца понимают, что такое циклическая связь.
Я Вам открою секрет - никто не понимает:)
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820415
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
> В БД все связи направленные, соотв. цикл надо искать как в орграфе.
>
> Хм, связи 1:1 вроде как ненаправленные. Хотя используются довольно редко.

Связь -- это FOREIGN KEY, как он может быть ненаправленный ?
Не, ну конечно при 1:1 ты можешь сделать два встречных FK, только
записи как вставлять потом ?


> По сабжу - один из способов хранение иерархий id+parent_id уже сам по себе
> содержит цикл. Что ж теперь, из-за какого-то препода отказываться от такого способа?

Там цикл разорваный (т.е. допустимый). Разорваный тем, что связь необязательная,
parent_id всегда NULL-able.

FK - это ограничение целостности, а не связь. В "реляционных системах" связи принципиально не поддерживаются.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820467
pashalost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> В "реляционных системах" связи принципиально не поддерживаются
Вот это действительно высший бред. Можно сказать "апофеоз бреда". Relation - в переводе с английского означает СВЯЗЬ. Они именно потому так и называются, что основаны на СВЯЗЯХ.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820480
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вот это действительно высший бред.

Вы заблуждаетесь. В данном случае Бредятина абсолютно прав.
...
Рейтинг: 0 / 0
циклические связи в БД
    #37820560
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 05/31/2012 08:15 PM, guest_20040621 wrote:

> Потому, что это свидетельствует о явной ошибке. Почему это ошибка - читайте Дейта.

Ни о чём это не свидетельствует.
Топикстартер, не поддавайся на провокации всяких гестов !
Я тебе всё достаточно понятно уже объяснил.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 345, страница 1 из 14
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / циклические связи в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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