powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Развязать зависимость
14 сообщений из 14, страница 1 из 1
Развязать зависимость
    #38528717
ArturNimrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста развязать зависимость такого вида (см рисунок). И вообще, как поступают в случаях, когда одно поле говорит, с какой таблицей выполняется связь другого поля?
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528733
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrod,

По уму в дата поинт сделать 4 поля и связать каждое со своей таблицей.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528755
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я сделал бы сквозной ID во всех четырех таблицах (путем выделения единой таблицы-родителя)- тогда поле type становится ненужным и constraint-ы создаются нормально.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528768
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrodкак поступают в случаях, когда одно поле говорит, с какой таблицей
выполняется связь другого поля?
Убирают это поле вообще, потому что связь строится не от мастер-таблицы на детей, а наоборот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528821
ArturNimrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно подробней, как это должно выглядеть? Вот хотя бы на конкретном данном примере. Просто таких моментов в проектируемой БД несколько, и разобрав на конкретном примере, пойму как поступать дальше. Вариант с введением четырех полей для каждой таблицы подразумевает, что тогда надо наложить ограничение, что если какое либо из этих полей не null, то остальные должны быть null. Кажется это не совсем красиво. С вариантом сквозного ключа тоже не совсем понятно, как делать выборку, если не знать из какой таблицы брать связанную запись. Вот третий кажется удачным, но не могу понять, покажите пожалуйста.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528836
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrodнадо наложить ограничение, что если какое либо из этих полей не null, то
остальные должны быть null. Кажется это не совсем красиво.
Тогда будь проще: слей все пять таблиц в одну. Хранение NULL-флагов ничего не стоит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528912
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrodВариант с введением четырех полей для каждой таблицы подразумевает, что тогда надо наложить ограничение, что если какое либо из этих полей не null, то остальные должны быть null. Кажется это не совсем красиво.
Зачем? Ненужны ограничения. По умолчанию ставишь поле в null и все. Дальше какие заполнятся то уже то и будет.
Незная задачи никто тебе "конкретно" ничего нескажет.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38528931
ArturNimrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хотел разные сущности объединять, да и потом ORM на это накладывать придется. Может будет хорошим вариантом если в каждую таблицу типа ввести индекс DataPoint'а? По сути DataPoint это пункт меню, и он может и не иметь какого-то типа, в тоже время, не должно быть так, что один DataPoint имеет два типа одновременно (это я про вариант с полями-ссылками на каждую таблицу и вытекающее от сюда ограничение).
...
Рейтинг: 0 / 0
Развязать зависимость
    #38529116
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуглить supertype-subtype relationship.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38529877
ArturNimrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мужики, ну я же на форум за помощью не для отссылок пришел, я не базовик, до определенного момента я привел БД к НФ, вещи которые не понимаю, прошу хотя бы на конкретном примере показать. За гугл спасибо, почитал. Если правильно понял, то мне нужно убрать из DataPoint поле Type, а в таблицы String, Integer .. добавить поле DP и внешний ключ на таблицу DataPoint. Если нет, поправьте пожалуйста.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38529927
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrod мне нужно убрать из DataPoint поле Type, а в таблицы String, Integer .. добавить поле DP и внешний ключ на таблицу DataPoint. Если нет, поправьте пожалуйста.
Еси у Вас таблицы String, integer и т.п. используются только для хранения значений DataPoint - да, этого хватит.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38530418
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашибись, natural join несколько раз и готовченко.

У одного родителя может быть хоть стопицот деток если так надо. Например если датапоинт обеспечивает всех остальных своим уникальным id, то всем остальным этот id нужен без авто_инкремента. При условии, конечно, что ПО умеет запрещать создавать сирот. И при условии что связь налажена через уникальный атрибут (с авто_инкрементом например).

Как такое можно обсуждать абстрактно - ума не приложу.

Теоретически если даже это ровно одно отношение то сегрегация имеет смысл например для производительности. В контексте не связываешь лишнее и легче.
...
Рейтинг: 0 / 0
Развязать зависимость
    #38530549
ArturNimrod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
deblogger, почти ничего не понял, что ты имел ввиду. Спасибо, что помогли разобрать этот пример!
...
Рейтинг: 0 / 0
Развязать зависимость
    #38530783
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArturNimrod,

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


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