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

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

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

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

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

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


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