powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / IDEF1X: идентифицирующие отношения с практической точки зрения
9 сообщений из 34, страница 2 из 2
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35636017
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA пишет:

> IMHO, одна из главных заблуждений многих проектировщиков заключается в
> уверенности, что нормализация каким-либо боком имеет отношение к
> оптимизации хранения и/или получения данных. Это не совсем так, я бы
> даже сказал, совсем не так. Её главная задача состоит в стремлении
> избежать аномалий данных, что может привести, если не к потере, то к
> недостоверности хранимой информации.

Это - да, но всё же говорить, что "нормализация (не) имеет отношения к
оптимизации хранения и/или получения данных" ни в коем случае нельзя.
Она имеет непосредственное отношение и к тому, и к другому.

При нормализации за счёт устранения дублирования данных (аномалий,
о которых уже шла речь) УМЕНЬШАЕТСЯ суммарный объём, занимаемый данными.
(бывают случаи, когда этого не происходит, или наоборот происходит увеличение,
но они -- скорее исключение). Это влияет непосредственно и на получение
данных :
поскольку снижается их объём, в каких-то случаях получение данных
ускоряется.

поскольку данные как правило разносятся по нескольким таблицам,
скорость получения данных можетснижаться за счёт того, что надо
выполнять JOIN-ы для получения части данных из других таблиц.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35636098
AK-74U
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherИдентифицирующая связь скорее означает, что подчиненная сущность не только не может существовать без главной, но и всех атрибутов подчиненной сущности (без идентификатора главной) будет недостаточно, чтобы идентифицировать ее в реальном мире. Другими словами, невозможно построить никакой альтернативный ключ без участия идентификатора главной сущности.
Я, вероятно, не очень хорошо излагаю свои мысли 0:) Вы, безусловно, правы. Однако я и не утверждаю, что заказ нельзя перекинуть. Я как раз подразумеваю, что заказ возможно идентифицировать и без участия клиентской сущности.
ChAНасколько я понимаю, практический подход в значительной степени определяется популярностью объектно-ориентированного подхода(ООП), который никоим образом не является синонимом реляционной модели данных(РМД), который, по большому счету, идет от данных, а не от сущностей. И сущность в ООП, в общем случае, совсем не обязательно равна таблице в РМД, так как выбирается программистом-проектировщик исходя из своих, зачастую, искаженных понятий о предметной области, вплоть до полной абстракции оных. Тогда как РМД, отталкиваясь от понятия "данных", представимых в табличной форме, опирается на формализованный математический подход и выражает его(понятие) через понятийный аппарат теории множеств.
Вы не могли бы более развернуто изложить вашу точку зрения о влиянии ООП на практику работы с реляционными моделями? Очень интересно.
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35637134
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-74U Я как раз подразумеваю, что заказ возможно идентифицировать и без участия клиентской сущности.

Верно, заказ - неудачная штука для иллюстрации идентифицирующей связи. У него совершенно отсутствует естественный ключ, поскольку много заказов могут быть совершенно одинаковы даже у одного и того же клиента. Поэтому мы вынуждены прицепить к нему номер, а с ним - и самодостаточность в идентификации. В принципе, сформированный заказ с номером, как кучка подготовленной продукции на складе, вообще может какое-то время пожить без клиента - хозяин отказался, налетай, кто хочет. Какая же это идентифицирующая связь?
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35638338
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто - да, но всё же говорить, что "нормализация (не) имеет отношения к
оптимизации хранения и/или получения данных" ни в коем случае нельзя.
Она имеет непосредственное отношение и к тому, и к другому.Можно, ибо отношение не только косвенное, но и неоднозначное. То, что в процессе нормализации может происходить уменьшение объема хранимых данных, можно считать дополнительным бонусом. Но может и не происходить, а может, для некоторых видов оптимизации, понадобится денормализация. Поэтому настаиваю, что нормализация в буквальном смысле не имеет никакого отношения к оптимизации, а предназначена только для устранения возможных противоречий(аномалий) в модели данных.
Некоторые виды аномалий действительно имеют отношение к дублированию данных, и, естественно, при их устранении естественным образом будет происходить "уплотнение" данных. Идеалом считается БД, в которой каждый факт предметной области будет хранится в одном-единственном месте. Но это будет следствием нормализации, а не оптимизации. Более того, сама по себе, нормализация имеет отношение к логическому проектированию, и в ходе его выполнения проектировщики не должны заниматься оптимизацией, впадая в грех так называемой "преждевременной оптимизации". Сначала надо сделать "правильную" БД, а потом уже думать об оптимизации в рамках физической реализации. И вот тогда-то все и начинается, выбор типов данных, добавление суррогатных ключей, конструирование индексов и т.д. и т.п.

AK-74UВы не могли бы более развернуто изложить вашу точку зрения о влиянии ООП на практику работы с реляционными моделями? Очень интересно.Ничего интересного. Достаточно посмотреть, как проектируют программисты, грубо говоря, "от сохи", т.е., те, кто никогда серьезно не занимался до этого проектированием БД и не читал литературу на эту тему. Они обычно пытаются мыслить в том же духе классов, свойств, агрегации, etc. А до этого точно так же мыслили записями. Т.е., их путь идет не от той информации, которую они будут обрабатывать, а от того, какие сущности(классы) они "увидели", не зная, да и не пытаясь охватить взглядом целостную модель.
Нормальное проектирование подразумевает предварительный этап плотного знакомства с предметной областью, выделения информационных потоков, включая их взаимодействие и преобразование. И только после такого анализа можно садиться за "конструирование реальности", выделяя информационные единицы и тестируя их на аномальность. Это очень грубое, схематичное, описание процесса, более внятно это описано во всякого рода книгах на тему проектирования БД. Несмотря на отдельные разногласия, в целом они говорят об одном - прежде чем проектировать, изучите ту предметную область, для которой собираетесь строить модель. И тогда не придется каждый раз перестраивать БД и переписывать код клиента, когда всплывут новые, неозвученные ранее, пожелания заказчика.
Обратный путь, характерный для практиков, ведет к итерационному процессу, когда после очередной итерации выясняется, что "классификация" выполнена неполно, так как не учитывает тех или иных нюансов предметной области, типичный вариант "из-за деревьев не увидели леса". И по новой, "на колу висит мочало - начинаем все сначала". Самое плохое, что переделка обычно задевает все уровни системы. От БД, до клиентского интерфейса.

P.S. А, вообще, в данной теме это уже злостный офтоп.
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35639501
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAПоэтому настаиваю, что нормализация в буквальном смысле не имеет никакого отношения к оптимизации

"Ой, не пойму я, чего вы спорите..." (с) д.Федор.

Нормализация - она одна. Движение от первой к пятой НФ, и точка.

А оптимизаций может быть много. Не бывает "оптимизации" вообще - бывают разные оптимизации по разным критериям, зачастую противоречащие друг другу. Иногда для достижения одной цели приходится "проваливать" оптимальность по большинству остальных параметров. Например, плавающий танк - броня слабее нормального, на трассе хуже запорожца, и плавает хуже лодки. А нужен.

О процессе нормализации можно лишь сказать, что при нем происходит оптимизация по критерию устранения аномалий обновления. Об остальных критериях однозначно сказать нельзя: быстродействие - скорее улучшается, кроме некоторых типов запросов. Объем данных - скорее уменьшается, хотя можно придумать случаи, когда это не так. Число таблиц (если кто-то вздумает "оптимизировать" по этому критерию - ухудшается :-) Простота некоторых видов запросов - ухудшается.

Так что оптимизировать можно и после нормализации, отдельно. А лучше, конечно, помнить о ключевых критериях необходимой оптимизации и в ходе проектирования.
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35640150
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher"Ой, не пойму я, чего вы спорите..."Действительно, о чем ?Cane Cat FisherНормализация - она одна. Движение от первой к пятой НФ, и точка.Как это одна ? Каждая нормальная форма борется с каким-либо конкретным недостатком представления данных. И, надеюсь, не сильно Вас удивлю, если упомяну о 6NF , вдобавок к наиболее известным шести ? Не удивлюсь, если со временем будут введены и более высокие, в полном соответствии с лозунгом "нет предела совершенству". Хотя на практике, как правило, все ограничивается 3НФ, или БКНФ. Впрочем, вынужден признать свою неправоту. Как утверждают апологеты, приведение к БКНФ достаточно, чтобы избежать всех известных аномалий. Более высокие НФ решают несколько иные задачи.

Cane Cat FisherА оптимизаций может быть много. Не бывает "оптимизации" вообще - бывают разные оптимизации по разным критериям, зачастую противоречащие друг другу. Иногда для достижения одной цели приходится "проваливать" оптимальность по большинству остальных параметров.Безусловно. Но какое отношение эти, извиняюсь, банальные рассуждения имеют к нормализации ? Или ведете к тому, что всё, что ни делается, к лучшему ? Ну, тогда любой процесс можно рассматривать как оптимизацию. "Баба с воза, кобыле легче". Но хотелось бы этого избежать, так как слишком вольная трактовка терминов не способствует взаимопониманию.

Cane Cat FisherО процессе нормализации можно лишь сказать, что при нем происходит оптимизация по критерию устранения аномалий обновления .Вот, вот, в полном соответствии с предыдущим абзацем. Не возникает ощущения неестественности выделенного словосочетания ?

Cane Cat FisherОб остальных критериях однозначно сказать нельзя: быстродействие - скорее улучшается, кроме некоторых типов запросов. Объем данных - скорее уменьшается, хотя можно придумать случаи, когда это не так. Число таблиц (если кто-то вздумает "оптимизировать" по этому критерию - ухудшается :-) Простота некоторых видов запросов - ухудшается.Какое-такое быстродействие ? Какие-такие запросы ? Мне кажется, что Вы тоже смешиваете процесс логического проектирования, на котором формально происходит нормализация, и физического. Готов согласится, что в повседневной практике часто они происходят одновременно, хотя не готов считать такую ситуацию нормой. Но именно об этом я и писал, упоминая преждевременную оптимизацию, которая вполне способна запутать ситуацию, порождая совершенно невообразимые формы, которые удовлетворяют понятию оптимальности конкретного проектировщика. Почему-то при этом нередко всплывает нарушение 1НФ, насмотрелся.
Еще раз повторюсь, сделай "правильную" БД, а потом хоть заоптимизируйся, по любому критерию, который больше нравится.
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35640286
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChACane Cat FisherНормализация - она одна. Как это одна ?

Так, что это достаточно жестко заданный процесс. Если нескольким специалистам поставить одну и ту же задачу, например привести к НФБК набор таблиц, то результат у всех будет одинаков.

А вот если потом заставить их оптимизировать это по одному и томе же критерию, скажем, быстродействию - от результат может быть разным, и это нормально.

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

Я хочу лишь сказать, что вот Вы рассуждали о связи нормализации и оптимизации, или отсутствии таковой, и ни разу рядом с оптимизацией не упомянули о ее критериях. А без этого в слове "оптимизация" не больше смысла, чем в известных словах "перестройка" и "ускорение" :-)
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35640528
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherChACane Cat FisherНормализация - она одна. Как это одна ?

Так, что это достаточно жестко заданный процесс. Если нескольким специалистам поставить одну и ту же задачу, например привести к НФБК набор таблиц, то результат у всех будет одинаков.Принимается. Но только при условии, если таковые "специалисты" имеют не только четкое понимание хотя бы первых трёх НФ, но и придерживаются их на практике. Что, увы, совсем необязательно. Я ведь не зря упомянул нарушение 1НФ в предпоследней фразе предыдущего поста. Вот вроде и основной ключ наличествует, и явных функциональной зависимостей между атрибутами, помимо ОК не наблюдается. Но нет, нет, да наткнешся на список значений в поле. Оно бы и ладно, если бы какой-нибудь вектор значений, который только клиент и разбирает, так ведь и запросы к таблице соответствующие, фултесктоподобные. Формально, при соблюдении 1НФ значения полей должны рассматриваться только как атомарные, каковые должны сравниваться только на равенство или неравенство в целом, а не какой-то их части. Это не считая проверки на NULL, который сам по себе вещь весьма неоднозначная, чему Дейт в своей классической книге уделил немало внимания.

Cane Cat FisherЯ хочу лишь сказать, что вот Вы рассуждали о связи нормализации и оптимизации, или отсутствии таковой, и ни разу рядом с оптимизацией не упомянули о ее критериях.Кхм. Начинаем прямо с первой фразы отсюда . Просто Вы потеряли контекст, явно зацепившись за фразу из моего ответа MasterZiv, который, в свою очередь, комментировал мою.

P.S. Форум предполагает обмен достаточно краткими сообщениями, а не статьями. Если что-то автор и не помянул, то вовсе не обязательно подозревать его в самом плохом или ставить это ему в упрек. А то обмен мнениями превращается в парафраз - "если что-то может быть понято неправильно, значит так оно и будет". И, понеслась, каждый о своем, особенно если используются вольные трактовки терминов.

P.P.S. Я вот вчера в словаре с удивлением обнаружил, что "амбициозный" - это "высокомерный" :) Хотя вполне можно наткнуться на формулировку типа "амбициозный проект" или "план". "Высокомерный" проект - неплохо звучит ? ;)
...
Рейтинг: 0 / 0
IDEF1X: идентифицирующие отношения с практической точки зрения
    #35640812
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAесли таковые "специалисты" имеют не только четкое понимание хотя бы первых трёх НФ, но и придерживаются их на практике. Что, увы, совсем необязательно. Я ведь не зря упомянул нарушение 1НФ в предпоследней фразе предыдущего поста

Ой, как я Вас понимаю! А мой навязчивый кошмар - отстуствие первичных ключей в старых системах. Началось еще в 94 году, когда одна светлая голова кодом товара сделала сокращение - по две буквы от каждого слова. И все работало несколько лет, пока не купили Ко леса Та врии и Ко лер Та мбовский :)

ChAP.P.S. Я вот вчера в словаре с удивлением обнаружил, что "амбициозный" - это "высокомерный" :)

IMHO, в печь такой словарь :) Амбициозность - постановка перед собой значительных целей. Слово вполне подходит как для проекта, так и для человека. А высокомерие - определенное отношение человека к другим людям. Иногда сопровождающееся амбициозностью, а иногда и нет, что особенно... э-э-э заметно :)
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / IDEF1X: идентифицирующие отношения с практической точки зрения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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