Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie Хм. До тех пор, пока Вы сами и один пишете программу, сами и один эксплуатируете и сами и один пользуетесь результатами - нет абсолютно ничего предосудительного в абсолютно любом использовании такого мощного инструмента, как сервер БД. Когда одно из этих условий не выполняется - .. накоплена определенная статистика, что делать и чего не делать, дабы у коллег, пользователей и наследников не возникало желания тебя убить. Как факт - я болтал с парнем, который пришел на мою пред-предыдущую работу уже после моего ухода, и узнал, что он среди прочего приписывает мне авторство нескольких хороших модулей, сделанных не мной. Я разубедил его, но "осадок остался" - приятно быть чем-то вроде живой легенды, которой априори приписывают все хорошие решения. Если "я полагаю" для Вас достаточное обоснование - значит, давайте. Но обратите внимание: если не ошибаюсь, не нашлось ни одного человека, который поддержал бы Ваш подход (а соответственно - был бы рад работать с Вами или после Вас). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieТам, где есть необходимости осуществлять частые изменения такой ключ безусловно неприемлим! Я говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил. Пример с ключом в заглавном посте темы это лишь тривиальный случай. ИМХО , ничего страшного в этом нет. Если работает - пусть работает. Просто иногда проблемы возникают со временем, при развитии системы. Т.е. то что работает сейчас, необязательно будет работать в будущем. Поэтому люди, исходя из опыта, думают (стараются по крайней мере) немного вперед и стараются обезопасить себя заранее. Т.е. для неразвивающейся системы (ничего ругательного, например телефонный справочник) допустимы всякие допущения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Может хоть раз постараетесь объяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:59 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri Лучше не надо просить. Только "У-у-у" наслушаетесь. Да еще и узнаете что "вы просто неправы". Вот просто неправы и все тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:07 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
XMА правила эти определяются где - на клиенте? Правила определяются людьми. А хранятся в соответствующей таблице, как я говорил. Ядро системы будет применять эти правила и соответственно им изменять последовательность. 2ALL Действительно очень жаль, что среди вас не нашлось ни одного, кто хотя бы допустил возможность использования моей идеи. :( С одной стороны следовало ожидать, что вы будете на чём свет стоит говорить о непогрешимости реляционной теории - многи из вас ведь на ней зарабатывают, знают её как свои 5 пальцев, верят. С другой, всё же грустно, что местами это доходит до "дело ленина бессмертно потому что оно верно". Понимаете, я вовсе не отвергаю нормализацию и суррогатный ключ, наоборот. Просто любая попытка хоть чуть-чуть, хоть где-то выйти за рамки постулатов вызывают чуть ли не ярость... Жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:09 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieПравила определяются людьми. А хранятся в соответствующей таблице, как я говорил. Ядро системы будет применять эти правила и соответственно им изменять последовательность. ...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели... Что-то мне это напоминает... А! Вот! Обратите свой взор в сторону ООБД, так как ваши идеи более близки к ним. Там тоже не ограничивают себя теорией, и теорий то у них формализованных нет, и разработка универсальных БД приветствуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:25 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie Да выходите пожалуйста! О какой ярости вы говорите? Вы спросили о том кто прав - вам сказали что формально прав начальник... PS> Что мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:34 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели... Уважаемый, какая эвалюция, каких структур? Это вы про вопрос о том сколько нужно полей один или два? Глубоко смотрите однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:35 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Немного флейма,...)) Имеем три таблицы - Dogovor (Договоры), Client (клиенты), Document (Документ клиента (паспорт) удостоверяющий личность). Каждый договор должен быть подписан клиентом, Каждый клиент может заключить много договоров. В каждом договоре, при распечатке должен быть указан паспорт или другой документ удостоверяющий личность клиента. Известно, что клиент может сменить фамилию. Но интересно получать всю историю о конкретном клиенте. Если поместить атрибуты ФИО в таблицу Client, то получится что на одного клиента приходится несколько записей, и историю работы с клиентом сформировать будет невозможно. Опять же, если поменять ФИО в таблице Client, то распечатать договор в том виде, в котором он был до получения клиентом новой фамилии также будет невозможно. Еще одна мысль - чтобы внести клиента в базу необходимо убедиться в его личности - т.е. необходим документ, удостоверяющий личность. Т.е. без паспорта - никуда... Но странное дело большинство систем построено по стандартной схеме, когда атрибуты ФИО b id клиента лежат в одной таблице. А как на счет того, чтобы отойти от этого стандарта? Например сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. В приведенной схеме используется составной первичные и вторичные ключи, причем на мой взгляд - весьма эффективно. Эдакая этажерка. Договор ссылается на документ клиента, а документ ссылается на клиента, и получается косвенным образом договор ссылается на клиента. Т.е. построив правильно иерархию таблиц и правильно раздожив атрибуты уходим от кучи проблем. Так что же получается? Помнится недавно был топик как однозначно идентифицировать личность. Предлагался вариант ФИО+ДР... А может ну его нафиг такой вариант? потому как в этой схеме он просто не нужен... Да здравствуют составные первичные ключи!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:41 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ХМОбратите свой взор в сторону ООБД, так как ваши идеи более близки к ним WOW! :) ООБД, за ними будущее, вы не находите? Мне очень приятно, что вы рекомендуете меня туда ;) funikovyuriО какой ярости вы говорите? Ярость в инетллектуальном смысле, разумеется. Ярая защита теории, указание на недостаток знаний... funikovyuriЧто мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели... Вот-вот! И мне :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:41 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieС другой, всё же грустно, что местами это доходит до "дело ленина бессмертно потому что оно верно". Понимаете, я вовсе не отвергаю нормализацию и суррогатный ключ, наоборот. Просто любая попытка хоть чуть-чуть, хоть где-то выйти за рамки постулатов вызывают чуть ли не ярость... Жаль.Э нет. Не стоит, как говорится, с больной головы на здоровую (без обид). Во-первых, нет ничего практичнее хорошей теории (это не мои слова). Во-вторых, вам ясно дали понять именно практические недостатки вашего "подхода", а именно: - более сложные в написании запросы - снижение производительности. То есть ваш подход неверен с обеих точек зрения, и теоретической , и практической . В этой связи как раз ваша позиция выглядит позицией веры , а не знания . "Я верю, что все сделал правильно, и точка". Вы говорите, что у вас "все работает". Прекрасно. Рады за вас. Просто поймите, что простенькую систему можно сваять и на коленке, "силовым" методом. А вот для сложных систем нужно уже знать как правильно . Чтобы построить собачью будку особых знаний не надо, достаточно горячего желания и базовых умений. А вот на тех же основаниях мост через серьезную реку не построишь. Вам здесь пытались сказать "как правильно". К сожалению, ваш подход с позиции веры, а не твердых знаний не позволил вам принять всеобщие рекомендации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
funikovyuri...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели... Уважаемый, какая эвалюция, каких структур? Это вы про вопрос о том сколько нужно полей один или два? Глубоко смотрите однако... Это я несколько неудачно выразился про подход - ХЗ что будет храниться, поэтому загоним все данные в одно поле, а описание их структуры и правила их извлечения в другое поле, и поручим ядру их разгребать Frankie WOW! :) ООБД, за ними будущее, вы не находите? Мне очень приятно, что вы рекомендуете меня туда ;) Не нахожу. И люди за три года на 80 страницах обсуждения в соседнем форуме тоже не нашли. funikovyuri Что мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели... ... не заметив при этом своей .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:59 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenmanТак что же получается? Помнится недавно был топик как однозначно идентифицировать личность. Предлагался вариант ФИО+ДР... Непонятно, зачем обсуждать то, что давным-давно решено в официальных структурах. ФИО, дата и место рождения. gardenmanДа здравствуют составные первичные ключи!!!! Составные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами. Ключевой вопрос - именно что "правильно применены". Мне пришлось иметь дело с базой, вполне себе OLTP, где ПК из четырех-восьми полей был нормой, а рекордом было, кажется, четырнадцать. Думаю, представляете себе удобство запросов к такой базе. Начинаешь думать, что NATURAL JOIN имеет право на существование... Код: plaintext 1. Вот этого не понял. Чем это отличается от первичного ключа, сделанного парой строк выше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:06 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenman Код: plaintext если этот document_id это id документа клиента, возможно, будет достаточно только его? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:35 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
softwarerСоставные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами. Денормализации?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
funikovyuri gardenman Код: plaintext если этот document_id это id документа клиента, возможно, будет достаточно только его? Ага, я это прекрасно понимаю. Но... т.к. есть внешний ключ от таблицы Dogovor к document, то такой индекс имеет право на существование в целях повышения поизводительности обработки внешнего ключа. И, далее если если к договору прилеплен определенный клиент, то в качестве док-та удостоверяющего личность может быть толь док-т, принадлежащий этому клиенту, либо никакого документа. Короче все до тривиальности просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:32 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Вам знакомо определение системы? В чьей интерпретации, позвольте осведомиться? Ладно, не знакомо, так незнакомо, проехали. > До относительности атомарности атрибута сами мыслю доведете? :) Вы опять? ;) Т. е. я должен все написанное еще раз процитировать? ;) Не работает Ваше утверждение в общем случае. Примеры imho было достаточно, чтобы в этом убедиться. Какие еще аргументы нужны? ;)) Примеры были приведены для опровержения вашего "общего случая" независимости атомарности от рамок рассматриваемой системы. Если вы с логикой дружите, должны знать, что примеры для доказательства не используются :) Поэтому, чтобы не сойти за болтуна, потрудитесь таки обосновать свое общее утверждение более весомыми утверждениями, чем "это очевидно". Удачи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:34 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenman Хм, интересно! Никогда такими вещами не занимался. А где вы про это узнали и где можно более подробно почитать про такой вариант денормализации. Потому как у меня есть сомнения по поводу удобства поддержания такой структуры, возможно я зря волнуюсь - но мне хочется ознакомиться с подходом по-лучше! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:51 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenman Я все взвесил - получается здорово... :) Мой респект! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:54 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
funikovyuri gardenman Я все взвесил - получается здорово... :) Мой респект! Глазам не верю! обычно все что я тут говорю в форуме - воспринимается в штыки... Испытываю чувство глубокого удовлетворения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 АЛЛ Это писец!!! ,не... даже ПОЛНЫЙ ПИСЕЦ !!! вы только писать умеете? а читать? Если это просто прикол, то СЛИШКОМ правдоподобно звучат заблуждения, и в скором времени надо ожидать систем где не только все столбцы хранятся в одном столбце, но и все строки в одной. А что парсить элементарно, нарущений уникальности нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:06 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов softwarerСоставные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами. Денормализации?! А чего, по-Вашему? Простой пример: есть таблицы A >----- B. Рассматриваем варианты: 1. Суррогатный ключ в B. В A - присутствует поле, не имеющее физического смысла (внешний ключ). 2. Естественный ключ в B. В A - присутствует поле, имеющее физический смысл; в определенной ситуации это поле позволит обойтись без join-а в запросе. 3. В ключ добавляются новые поля (делается составной ключ). Соответственно, в A из B копируются дополнительные поля и их значения. Как по-Вашему, это нормализация, денормализация или что-либо третье? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:11 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
денормализация - так как вводится еще одна ФЗ document_id==>client_id в DOGOVOR'е ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:12 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
когда я что-то проектирую я менньше всего думаю о нормальных формах. Просто несколько принципов: Каждое значение атрибута должно появляться по возможности только 1 раз, в одной таблице и в одной строке. Количество объектов (индексы, таблицы и прочее) должно быть минимальным. Должна осуществляться жесткая поддержка ссылочной целостности. Вот еще один пример: усть будет табица, содержащая 3 поля - Фамилия, Имя, Отчество. И, допустим требуется реализовать скролируемый просмотр этой таблицы в алфавитном порядке на экране пользователя, причем не загружая всю таблицу (которая может содержать миллионы строк). А испоьзовать для повышения производительности кэширование (строк эдак по 20-50). Понятное дело, что запросы тапа select * from people where family >= :f and name >=:n and otch >=:o абсолютно бесполезны. В оракле, например, можно создать индекс от функции f(family||name||otch), эту проблему, или index-organized table по полю family||name||otch, которая будет меняться триггером и служить индексом для основной таблицы. А как быть в других базах? Вот и приходится извращаться - типа создавать вычисляемое поле (family||name||otch), и по нему уже строить индекс. Если смотреть со стороны теории, то тут нарушены все нормальные формы, но зато - работает офигительно быстро. Вывод - теория хорошо, но опыт - лучше... И нормализация - это не цель проектирования... Цель проектирования - производительность и согласованность (непротиворечивость) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:38 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Господа, мне с вас смешно. Ну нельзя же так... Как только появляется составной ключ, так сразу "денормализация". В приведённом примере никакой денормализации нет. Если каждый клиент ведёт собственную нумерацию, то никакой дополнительной фунциональной зависимости между договором и клиентом нет. То, что тут показано, называется иногда "миграцией ключей" - обычное дело, ничего удивительного. Создание индексов по функциям и вычисляемых полей - нормальная практика, ничего общего с нормализацией не имеющая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:54 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33027608&tid=1545898]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 377ms |

| 0 / 0 |
