powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ограничения целостности
12 сообщений из 12, страница 1 из 1
Ограничения целостности
    #34796007
Надо сделать следующий констрейнт

Есть таблица parent есть таблица child. Они связанны между собой отношением многие ко многими, т.к. один парент имеет несколько child, возможно вхождение одних и тех же child в разные parent.

Надо установить констрейнт на то, чтобы в БД небыло двух разных parent с одинаковой номенкулатурой child. Ничего лучше чем добавить в парента текстовое поле и перечислить в нем PK детей в алфовитном порядке через запятую и наложить на это поле юник в голову не приходит что есть явное нарушение 1НФ.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796023
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходомНадо сделать следующий констрейнт

Есть таблица parent есть таблица child. Они связанны между собой отношением многие ко многими, т.к. один парент имеет несколько child, возможно вхождение одних и тех же child в разные parent.

Надо установить констрейнт на то, чтобы в БД небыло двух разных parent с одинаковой номенкулатурой child. Ничего лучше чем добавить в парента текстовое поле и перечислить в нем PK детей в алфовитном порядке через запятую и наложить на это поле юник в голову не приходит что есть явное нарушение 1НФ.
Это только цветочки, там еще парент может не один а набор парентов (несколько входов и несколько выходов), ацикличность, альтернативы для входов и выходов, зависимость внутри списка входов, выходов и т.д. и не просто да-нет, а сложные правила, а если преставить такие зависимости межуровневые, то пора вешаться. :)
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796029
Сахават Юсифов
Это только цветочки,
Ягодки пусть потом будут. А это мне ща надо. Вот спрашиваю у мирового разума )))
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796032
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходом Сахават Юсифов
Это только цветочки,
Ягодки пусть потом будут. А это мне ща надо. Вот спрашиваю у мирового разума )))
Мировой разум обсуждает чала. :)
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796061
СуперЧАЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мимопроходомНадо сделать следующий констрейнт
Есть таблица parent есть таблица child. Они связанны между собой отношением многие ко многими, т.к. один парент имеет несколько child, возможно вхождение одних и тех же child в разные parent.

Надо установить констрейнт на то, чтобы в БД небыло двух разных parent с одинаковой номенкулатурой child. Ничего лучше чем добавить в парента текстовое поле и перечислить в нем PK детей в алфовитном порядке через запятую и наложить на это поле юник в голову не приходит что есть явное нарушение 1НФ.

Надо как в школе учат сделать третью таблицу, которая связывает parent и child. А далее как Вы и предложили организовать вспомогательный "индекс" для целей ускорения. Это может быть цепочка id, но в общем случае это м.б. любая функция, которая дает уникальное значение для каждого уникального набора children. Список не очень хорошо из-за переменной длины, но зато его легко вычислять, так что если количество детей ограничено, то сойдет.

Далее при обновлении связей надо делать:
1. проверять по индексу валидность операции, и если да, то
2. обновлять данные, а далее
3. обновлять этот индекс (в простейшем случае значение одного поля)
Естественно, внутри транзакции.

На НФ вообще не стоит обращать большого внимания, но если Вы все-таки хотите концептуальной чистоты, то проблем нет никаких. Вы имеете право создавать индексы для оптимизации доступа к данным, которые как следствие будут повторять содержимое в том или ином виде (необходимая избыточность). Пример, если хранить строки, то может понадобиться знать количество гласных ну или еще что-то. Это можно хранить в отдельной колонке, но очевидно, что это избыточность. То же самое здесь. Вы просто храните вспомогательный индекс.

Конечно, в хорошей модели данных эта информация (используемая для доступа к целевым данным) не должна храниться вместе с оригинальными данными на том же уровне. Например, встроенные СУБД индексы хранятся отдельно. Но так уже РМ устроена, а РСУБД реализованы, что там все в одну кучу свалено, да и понятия доступа не существует. Да что приходится юзать что есть. Но главное здесь это понимать роль этой вспомогательной колонки: это не (оригинальные) данные - эти ваш индекс, а у него своя собственная логика, отличная от логики основных данных. Для связи же данных по-прежнему используется третья таблица. Такой подход используется очень часто, так что никакого криминала тут нет.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796135
Спасибо! Очень толково все написали.
Подозревал я такое дело, но теплилась надежда, что я не знаю как, а РСУБД это все уже сами умеют делать. Вроде типовая задачка то.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796149
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Надо сделать следующий констрейнт

Тупая задача - тупое решение.

Hint: не умеете формулировать задачи - наймите того, кто умеет это делать.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796539
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходомНадо сделать следующий констрейнт
СУБД поддерживают только ссылочную целостность, т.е. ссылки некогда не будут битыми. Вам нужна семантическая целостность, которая обеспечивается приложением, например триггерами.
В вашем случае связующая таблица содержит ссылки (ФК) на parent и child. Все прочие проверки надо программировать самому.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796678
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот можем же когда хотим.
небольшие ньюансы
СуперЧАЛ[]
Вы имеете право создавать индексы для оптимизации доступа к данным, которые как следствие будут повторять содержимое в том или ином виде (необходимая избыточность).
[]
Конечно, в хорошей модели данных эта информация (используемая для доступа к целевым данным) не должна храниться вместе с оригинальными данными на том же уровне. Например, встроенные СУБД индексы хранятся отдельно.
В реальных РСУБД для отделения хранения вычисляемых индексов от данных можно использовать материализованные представления.
Не все модели, называемые моделями данных, озабочены способами хранения. РМД концентрируются собственно на данных. Можно выражать суть подобного рода ограничений в виде запросов непосредственно над данными. А материализованные представления в СУБД использовать для ускорения таких запросов. Это второй вариант решения задачки, но в данном случае я бы также начал с первого.
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796789
Фотография бухой бык
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это разве не противоречит одно другому?
- возможно вхождение одних и тех же child в разные parent
- чтобы небыло двух разных parent с одинаковой child
...
Рейтинг: 0 / 0
Ограничения целостности
    #34796886
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бухой быка это разве не противоречит одно другому?
- возможно вхождение одних и тех же child в разные parent
- чтобы небыло двух разных parent с одинаковой child

- чтобы небыло двух разных parent с одинаковым НАБОРОМ child
...
Рейтинг: 0 / 0
Ограничения целостности
    #34798881
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходомНичего лучше чем добавить в парента текстовое поле и перечислить в нем PK детей в алфовитном порядке через запятую и наложить на это поле юник в голову не приходит
И это вполне нормальное решение.

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


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