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

start [/forum/topic.php?fid=32&msg=38528717&tid=1541008]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 503ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...