powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь N:M
10 сообщений из 10, страница 1 из 1
Связь N:M
    #36999883
Lifter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос вроде простой, но все же...

Есть две таблицы, который сейчас связаны как 1:N

Первая таблица - справочник событий, которые могут возникнуть на устройстве (отказ, ребут, ..т.п.). Числовой код события здесь - PK.
Вторая таблица - собственно события возникающие на устройстве, (PK составной из даты события и кода устройства). Числовой код события здесь - FK.

БД на Oracle 10g, вторая таблица секционирована по диапазонам дат и по хэшу кодов устройств. В неё записывается порядка 400 строк в секунду.

Теперь задача: изменить связь между таблицами на N:M, т.е. теперь допускается что в один момент времени на одном устройстве может произойти несколько событий.

Не знаю как лучше реализовать:
1) стандартная таблица связка, с миграцией в неё составного ключа и партицированием как-то не очень привлекает, с учетом огромного количества данных;

2) отказаться от нормализации и писать коды событий в один столбец с каким-либо разделителем - тоже не очень;

3) подумываю насчет nested table, в общем нужен совет )
...
Рейтинг: 0 / 0
Связь N:M
    #37000056
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LifterВопрос вроде простой, но все же...

Есть две таблицы, который сейчас связаны как 1:N

Первая таблица - справочник событий, которые могут возникнуть на устройстве (отказ, ребут, ..т.п.). Числовой код события здесь - PK.
Вторая таблица - собственно события возникающие на устройстве, (PK составной из даты события и кода устройства). Числовой код события здесь - FK.

БД на Oracle 10g, вторая таблица секционирована по диапазонам дат и по хэшу кодов устройств. В неё записывается порядка 400 строк в секунду.

Теперь задача: изменить связь между таблицами на N:M, т.е. теперь допускается что в один момент времени на одном устройстве может произойти несколько событий.

Не знаю как лучше реализовать:
1) стандартная таблица связка, с миграцией в неё составного ключа и партицированием как-то не очень привлекает, с учетом огромного количества данных;

2) отказаться от нормализации и писать коды событий в один столбец с каким-либо разделителем - тоже не очень;

3) подумываю насчет nested table, в общем нужен совет )

Для начала напомню, что в Oracle связи не поддерживаются, так как в РМД просто нет ни объектов, ни связей, а есть только отношения:)
Так вот совет (на будущее) давно дал Дейт: нужно создавать отдельное отношение (в логической схеме БД) для каждой связи (в концептуальной схеме, которую СУБД не поддерживает).
Тогда бы у Вас не было той проблемы, которая сейчас возникла:)
При этом мощность связи "управляется" простыми ограничениями на пару внешних ключей в отношении, моделирующем связь.
Но, правда, тогда у Вас был бы вариант 1), который Вас не привлекает.
Лучше всего перейти на Cache, там много вариантов решения будет, в зависимости от постановки задачи, от которой Вы сообщили только маленький кусочек:)
...
Рейтинг: 0 / 0
Связь N:M
    #37000081
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lifter,

Если я правильно понял, то достаточно перетатащить код события в PK и все.

а связь остается 1:N

т.е. у Вас

Первая таблица - справочник событий
кодимя1Error12Reboot

Вторая таблица - собственно события возникающие на устройстве
УстройствовремясобытиеСервер117:18:541Сервер117:18:542Сервер219:14:042

авторт.е. теперь допускается что в один момент времени на одном устройстве может произойти несколько событий.
Условие выполнено?
...
Рейтинг: 0 / 0
Связь N:M
    #37000095
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

Для решения такой задачи
авторперейти на Cache?

Возможно переписать тонны текста, переделать логику, нанять/переобучить персонал?
и все это для решения такой задачи?
...
Рейтинг: 0 / 0
Связь N:M
    #37000134
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocustБредятина,

Для решения такой задачи
авторперейти на Cache?

Возможно переписать тонны текста, переделать логику, нанять/переобучить персонал?
и все это для решения такой задачи?
Тонны??? Логика??? Персонал???
Значит мое предположение о "кусочке" - это не то слово:)
Хотя логика и персонал уж точно совершенно не при чем. А вот кода в Oracle, действительно, намного больше:) Как выясняется, тонны:)
...
Рейтинг: 0 / 0
Связь N:M
    #37000241
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

Спор на тему кто лучше - в другую ветку.... а еще лучше тему почитайте....
Здесь же человек просил решение, а не инструмент. И ни словом, ни намеком не сказал о возможности смены СУБД.
И, если Вас попросят указать дорогу к улице Ленина в Москве, Вы пошлете человека в Челябинск, просто потому что его лучше знаете? Бредятина.
...
Рейтинг: 0 / 0
Связь N:M
    #37000987
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lifter Вторая таблица - собственно события возникающие на устройстве, (PK составной из даты события и кода устройства). В лоб - убрать ограничение первичного ключа на второй таблице или добавить в него что-нибудь (например автоинкрементное поле или код события) сделав его гарантированно уникальным.
...
Рейтинг: 0 / 0
Связь N:M
    #37002308
Lifter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем.
Пожалуй остановлюсь на совете lLocust, тем более что у самого параллельно возникла подобная мысль.
СУБД менять естесственно не буду, а вот за отсыл к Дейту спасибо, освежу в памяти на досуге =)
...
Рейтинг: 0 / 0
Связь N:M
    #37002860
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocustБредятина,

Спор на тему кто лучше - в другую ветку.... а еще лучше тему почитайте....
Здесь же человек просил решение, а не инструмент. И ни словом, ни намеком не сказал о возможности смены СУБД.
И, если Вас попросят указать дорогу к улице Ленина в Москве, Вы пошлете человека в Челябинск, просто потому что его лучше знаете? Бредятина.
Вы о чем-то о своем:) Не в тему. Я про решение сразу написал. С запасом на будущее:)
...
Рейтинг: 0 / 0
Связь N:M
    #37002899
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LifterСпасибо всем.
Пожалуй остановлюсь на совете lLocust, тем более что у самого параллельно возникла подобная мысль.
СУБД менять естесственно не буду, а вот за отсыл к Дейту спасибо, освежу в памяти на досуге =)
В Вашем случае и не стояла задача "переходить к связи M:М" так как событие связано с типом события, конечно же, связью 1:1. У Вас обычная ситуация, когда событие связано с участниками события (иногда говорят - схема "звезда"); в данном случае с устройством и с типом события .
Так что, коллега конечно, прав, что я влез не по делу:)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь N:M
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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