Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
В последнее время обострился спор с начальником насчёт следующего вопроса. Он считает, что первичным ключом таблицы (естественно речь идёт только о суррогатном ключе) должно быть поле, в идеале integer, auto_increment, не использующееся иначе как для связей таблиц. Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации. Так я делал БД по хранению результатов автогонок. Первичный ключ был столбцом, содержащим год, номер этапа, строку результата. Например 19780603 говорил о третьем результате на шестом этапе сезона 1978 года. Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место. Более общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не только отрицательно отражается на производительности но и содержит опасность потенциальной ошибки. Возможно дело в том, что он работает с известным своей убогостью MySQL, а я "вырос" на MSSQLServer2000. Я привык использовать язык SQL широко: вводить переменные, строить условия, возможно циклы. Не представляю себе жизнь без представлений и хранимых процедур. Мне интересно ваше мнение по этой проблеме. Если этот вопрос уже где-то обсуждался, дайте ссылочку. С Уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 10:47 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieВ последнее время обострился спор с начальником насчёт следующего вопроса. Это весеннее обострение. Пройдет. До осени. FrankieБолее общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не только отрицательно отражается на производительности но и содержит опасность потенциальной ошибки. Я тут скорее на стороне начальника. Не то что бы совсем нельзя, но только в том случае, когда без него никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 10:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Твой начальник прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:22 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Предлагаю не использовать в таблицах столбцов больше одного строкового типа и в нем хранить сразу же всю информацию.Пример таблицы: create table SqlRuTopic ( Topic varchar2(4000); ) Само собой Topic- первичный ключ. Значения: Все форумы/Проектирование БДShtockRe:Споры о первичном ключе<далее текст сообщения> Места сэкономили, блин, и работу облегчили. А производительность - на высоте....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:22 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieОн считает, что первичным ключом таблицы (естественно речь идёт только о суррогатном ключе) Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации. Для начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации. Берете любую ссылку "естественные и суррогатные ключи" и находите полный спектр мнений по этому поводу. Лично мое: - Во-первых, бездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль. Тем более что вычисляемые поля MSSQL, вроде бы позволяющие цивильно работать с такими данными, на самом деле этого не позволяют (они позволяют только получать цивильные данные, но не записывать их обратно). Если идти этим путем - надо делать updateable view. Но для начала надо иметь хороший ответ на вопрос - зачем этот геморрой. - Во-вторых, естественные ключи оправданы только в отдельных случаях при соблюдении достаточно жестких требований. У Вас наблюдается несколько легкомысленный подход. - Наконец, судя по приведенным аргументам, Ваш начальник прав, и весьма вероятно будет прав и в последующих спорах. P.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:26 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
softwarerP.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился. Дык! Небось это Фрэнки (нштейн) и есть! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:32 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ShtockПредлагаю не использовать в таблицах столбцов больше одного строкового типа и в нем хранить сразу же всю информацию........ Он тоже вчера это мне говорил. Я же не анархист. Просто считаю возможность использовать технологии шире, чем это предполагается. softwarerДля начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации И то и другое. Он, безусловно, остаётся целочисленным, однако строится по некоторым правилам, позволяющим хранить ещё какую-то информацию. softwarerбездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль С точки зрения сервера никакого нарушения нет. Я же не предлагаю делать как говорил Shtock. softwarerНо для начала надо иметь хороший ответ на вопрос - зачем этот геморрой. Говоря о примере с результатами гонок - ответ очевиден! Если использовать обыкновенный ключ, придётся добавить ещё два столбца, причём столбец 'year' будет иметь всего-то около 50 различных значений на 15000 записей. А столбец 'round' (1978 06 03) вообще меньше 20! В процессе разработки приложения по генерации статистики на основе такой таблицы я был очень доволен тем, что нужно гнать только один столбец, к тому же элементарно расщепляемый, вместо трёх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:43 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Витал softwarerP.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился. Дык! Небось это Фрэнки (нштейн) и есть! ;) Я не "опытный MSSQL-щик" а всего лишь самоучка. У меня нечаяно оказалась отличная книга... так всё и началось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 11:45 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
автор Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место. Можно узнать сколько места ты сэкономил? Сколько стоит это сэкономленное место? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
9Можно узнать сколько места ты сэкономил? Сколько стоит это сэкономленное место? Сколько в байтах сказать не могу - надо пробовать на конкретных mdf-фалйах. Вот прям на 100% сказать что занимает больше: 2 стобца int(2) или 1 int(4) не могу, но думаю, что первое. Тем более с кучей записей. А насчёт стоимости - да так намного легче работать с данными. Поэтому оно не "стоит", а "даёт". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:20 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
я к тому, что сейчас 80 Гиг стоит примерно 80$. т.е 1Гиг стоит 1 доллар! Сегодня разговоры о экономии места потеряли свою прежнюю актуальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:33 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Вы используете не технологию "шире", а ищете себе геморой. Подумайте о редактировании и о том, как будете парсить Ваш ключ для составления отчетности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:36 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieОн тоже вчера это мне говорил. Я же не анархист. Просто считаю возможность использовать технологии шире, чем это предполагается. :) Как Вам сказать... "использовать технологию шире, чем предполагается" можно в двух случаях: либо благодаря врожденной гениальности, либо благодаря недостатку знаний. Обычно с ростом знаний понимаешь, как мало знал про возможности использования технологии. Frankie softwarerДля начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации И то и другое. Он, безусловно, остаётся целочисленным, однако строится по некоторым правилам, позволяющим хранить ещё какую-то информацию. Это, простите, в музей юмора. Сходите в гугль и почитайте, что такое суррогатный ключ. Frankie softwarerбездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль С точки зрения сервера никакого нарушения нет. Я же не предлагаю делать как говорил Shtock. Это, простите, также в музей юмора. Во-первых, точка зрения сервера не имеет ни малейшего отношения к 1НФ. А во-вторых, Вы именно это и предлагаете - Shtock только проиллюстрировал подход более ярким примером. Frankie softwarerНо для начала надо иметь хороший ответ на вопрос - зачем этот геморрой. Говоря о примере с результатами гонок - ответ очевиден! Одна из моих любимых цитат, принадлежит моему другу: "Если попробовать доказать очевидный факт - он часто оказывается вовсе не очевидным. А иногда - вовсе не фактом". Frankie Если использовать обыкновенный ключ, придётся добавить ещё два столбца, Это, безусловно, страшно. Теоретикам нормализации, построенной на добавлении столбцов, уготовано место в геенне огненной, не иначе :) Опять-таки один из моих любимых авторов написал по подобному поводу примерно так: "некоторые программисты считают, что мировой запас скобок жестко ограничен, и применять их следует только если без них совсем нельзя обойтись". Frankie причём столбец 'year' будет иметь всего-то около 50 различных значений на 15000 записей. И чем это страшно? Неселективностью индекса по этому полю? В первую очередь стоит отметить, что про селективность на 15.000 записей вообще вряд ли стоит говорить; во-вторых - те же самые числа, упакованные а-ля селедка в бочке, безусловно, станут куда селективнее. Frankie В процессе разработки приложения по генерации статистики на основе такой таблицы я был очень доволен тем, что нужно гнать только один столбец, к тому же элементарно расщепляемый, вместо трёх. Вы, безусловно, имеете право быть довольны самыми экзотическими вещами. Лично я, например, был бы доволен возможностью написать Код: plaintext 1. вместо Код: plaintext 1. 2. 3. 4. 5. Более того, я совершенно уверен, что когда Вы перейдете от 15.000 записей к 15.000.000 - сервер также будет крайне доволен возможностью сосредоточиться на эффективности (например, использовании bitmap index), а не на идиотских операциях выковыривания данных, ранее вковырнутых в категорически не приспособленную для использования структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:41 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie softwarerДля начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации И то и другое. Он, безусловно, остаётся целочисленным, однако строится по некоторым правилам, позволяющим хранить ещё какую-то информацию. А если вдруг правила хранения информации изменятся? Возьмем пример: допустим есть некая БД учета продажи/покупки билетов. В ней есть "центровая" таблица "билеты" с первичным ключем по номеру билета(int), на который ссылается полбазы. А через 5 лет после внедрения БД какой-то умник решил что неплохо было бы к номеру билета добавлят еще и букву - например первубю букву фамилии кассира, продавшего билет. Вопрос на засыпку: сколько времени потребуется на переделку базы? Вы конечно можете считать этот пример надуманным... но я думаю "атцы" могут привести множество реальных примеров на эту тему. Frankie softwarerбездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль С точки зрения сервера никакого нарушения нет. Я же не предлагаю делать как говорил Shtock. Если мне не изменяет память 1 НФ утверждает приблизительно следующее: "Схема отношений R находится в первой нормальной форме. Тогда и только тогда, когда все входящие атрибуты являются атомарными." А Вы предлагаете хранить несколько атомарных значений(год, результат, этап) в одном поле. Что противоречит 1НФ. Frankie softwarerНо для начала надо иметь хороший ответ на вопрос - зачем этот геморрой. Говоря о примере с результатами гонок - ответ очевиден! Если использовать обыкновенный ключ, придётся добавить ещё два столбца, причём столбец 'year' будет иметь всего-то около 50 различных значений на 15000 записей. А столбец 'round' (1978 06 03) вообще меньше 20! В процессе разработки приложения по генерации статистики на основе такой таблицы я был очень доволен тем, что нужно гнать только один столбец, к тому же элементарно расщепляемый, вместо трёх. 1. Не экономтьте на спичках. Пусть введение суррогатного ключа заберет у вас пару мегабайт на диске. Это сколько-нибудь значимая цифра? По поводу разбиения столбца на атомарные: разбивать необходимо. Кол-во байт переданных по сети останется приблизительно тем же. А запросы типа "сколько было этапов в 1850 году, каковы средние х-ки 5-го этапа в годах с 1920 по 1990" будут работать гораздо быстрее (никаких like-ов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:43 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieСколько в байтах сказать не могу - надо пробовать на конкретных mdf-фалйах. Вот прям на 100% сказать что занимает больше: 2 стобца int(2) или 1 int(4) не могу, Кстати, очень несложно проверить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 12:54 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Голосуем! №1 Начальник всегда прав... №2 Если он не прав, см. п.№1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 13:45 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ShtockВы используете не технологию "шире", а ищете себе геморой. Подумайте о редактировании и о том, как будете парсить Ваш ключ для составления отчетности. О какой именно отчётности идёт речь? softwarerЭто, простите, в музей юмора. Сходите в гугль и почитайте, что такое суррогатный ключ. Я знаю, что это такое. Если бы я говорил о естественном, то сразу бы сделал 3 столбца и определил их ключевыми. softwarerЭто, простите, также в музей юмора. Во-первых, точка зрения сервера не имеет ни малейшего отношения к 1НФ. А во-вторых, Вы именно это и предлагаете - Shtock только проиллюстрировал подход более ярким примером. "точка зрения сервера" означает сохраность уникальности значений столбца. Данное поле анализируется только когда это необходимо. Shtock привёл крайность, я же прекрасно понимаю, что стоит за таким применением. Объединение столбцов в моём примере как нельзя логично. Возможно кончено что это "единичный случай", но он имеет место. softwarerЭто, безусловно, страшно. Теоретикам нормализации, построенной на добавлении столбцов, уготовано место в геенне огненной, не иначе :) Не надо путать добавление столбцов в таблицу с заменой значений столбца на ключ и создания связанной таблицы 5НФ. Я говорю о том, что бывают случаи, когда бессмысленно расщеплять стобцы. Кстати будет ответить Shtock'у следующим: "давайте сразу создавать таблицы с огромным числом столбцов длины, скажем, 3. Конкатенация это же так просто!" softwarerОпять-таки один из моих любимых авторов написал по подобному поводу примерно так: "некоторые программисты считают, что мировой запас скобок жестко ограничен, и применять их следует только если без них совсем нельзя обойтись". Пример хороший, но он скорее к аккуратности кода, повышению его читаемости. Я напрмер ставлю скобки (тут же, полагаю, будут и begin...end;) именно если без них нельзя обойтись. По поводу "выковыривания данных". Во-первых, на основе такой таблицы создаётся представление, в котором ключ расщеплён. Во-вторых, "выковыриванием" занимается чаще всего приложение, где это сделать совсем уж не проблема. И ещё. 15,000 записей - это вся Формула-1 за 55 полных сезонов. Так что 15,000,000 даже для чемпионата NASCAR, где проводилось в среднем по 40 этапов с 40 участниками на каждом, 1 миллион, не то что 15 - это за гранью разумного. prof79А если вдруг правила хранения информации изменятся? Не изменятся. Пока проводится чемпионат, он всегда будет проводится раз в год, в пределах этого года будут этапы (число которых уж точно не перевалит за 99), на которых будут показаны результаты (их число равно числу участников, которых также не бывает и близко к 99. По поводу предметной области можете мне поверить :) ). Если предполагается возможность изменения хранения конечно так делать нельзя! prof79Если мне не изменяет память 1 НФ утверждает приблизительно следующее: "Схема отношений R находится в первой нормальной форме. Тогда и только тогда, когда все входящие атрибуты являются атомарными." А Вы предлагаете хранить несколько атомарных значений(год, результат, этап) в одном поле. Что противоречит 1НФ. Понимаете ли в чём тут дело... Отойдём от первичного ключа. Я долго размышлял над вопросом: вот есть гонщик - "имя фамилия". Но ведь можно расщепить на имя+фамилия? Что это даст? Я пришёл к выводу, что это усложнит выборку, т.к. на каждом шагу придётся соединять эти два столбца. Кроме того, имя и фамилия совершенно очевидно (и это во всех записях) разделены пробелом, поэтому достать при необходимости что-либо проблем не составит. Так и с ключом - где-то расщепляется, а где-то и нет. Есть ведь представления... 2 softwarer, О размере - Спасибо, буду знать... Скажу ещё кое-что. Раз для всех вас мой спобос - грубая, явная ошибка, то остаётся ещё раз удивится недалёкости наших преподавателей. Ведь эта система является, ни много ни мало, моим бакалаврским дипломом, на отлично защищённым ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 13:46 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
BolГолосуем! №1 Начальник всегда прав... №2 Если он не прав, см. п.№1. У меня нормальный начальник. С ним можно и нужно вести здоровые дискуссии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 13:47 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Ваш начальник прав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 13:57 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Пример отчетности: да самое простое - Выбрать какие были результаты у команды А в 1997 году. Будете туеву хучу преобразований делать со всеми вытекающими. По поводу преподавателей и бакалавриата - imho российкие бакалавры - очередная пофанация в целях закоса под запад.У нас еще была возможность выбрать между инженером и бакалавром. Я выбрал инженера, а бакалавры дурью под названием научная работа маялись еще полгода, но знаний больше не получили.Теперь говорят, что инженеров переименуют в прикладных бакалавров. P.S. softwarer уже показал пример запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:10 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ShtockПример отчетности: да самое простое - Выбрать какие были результаты у команды А в 1997 году. Эх, не хотел углубляться в предметную область.... видимо придётся. Понимаете ли, что такое "результаты?" В гонках, как пожалуй ни в каком другом виде спорта, можно строить отчёты по таким мудрёным показателям, что даже в голове не укладывается. Так что без разъяснения "результатов" ничего, ровным счётом, сказать нельзя. ShtockПо поводу преподавателей и бакалавриата....У нас еще была возможность выбрать между инженером и бакалавром. Не, мы выбирали между инженером и магистром, а бакалавриат - это первые 4 года обучения. Все вместе. А дальше уже либо инженер - полгода учиться + полгода диплом писать (что вообще смешно с нашим уровнем дипломов, подавляющее большинство которых какие-то жалкие системы документооборота в Access, где даже VBA мининум), либо магистр - 2 года обучения (правда только 2-3 дня в институт ходишь), параллельно пишешь диссертацию. Ну я вот пошёл в магистратуру. Хотя основное время уделяю работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:27 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Если не ошибаюсь , многие SQL серверы очень рады когда им подсовывают ID integer not null primary key и сразу автоматически строют по нему индекс. Так что в первую очередь надо спросить у сервера, и соответствие 1нф, а потом уже спорить с начальником. А вдруг он в натуре прав? Глядишь премию выпишет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 14:29 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieЯ долго размышлял над вопросом: вот есть гонщик - "имя фамилия". Но ведь можно расщепить на имя+фамилия? Что это даст?Вопросо, безусловно, интересный, но подошли вы к ответу неверно. Атомарнось атрибутов - понятие не абсолютное, а относительное. То есть для одной системы ФИО атомарен, для другой нет. Для одной системы понятие "адрес" атомарно, для другой нет. Критерий состоит в том, какие операции предполагается выполнять над данными. Если система заведомо выполняет над атрибутом только операции типа сравнения (= <> < > <= >=), он может быть атомарным. Если хотя бы в потенциале возможны операции над частью атрибута, он не атомарен. В вашем случае критерий срабатывает четко. Вы заведомо будуте выполнять операции над частью значения атрибута. Значит, вы неверно спроектировали БД. У вас нарушение 1НФ. Вообще, если в запросах часто встречается LIKE, причем это предопределенные запросы , почти 100% - БД спроектирована неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:14 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Читаем по НФ!!! Вникаем... Читем почему НФ лучше не НФ (для РСУБД конечно). Вникаем... Оцениваем аргументы свои и начальства с новых позиций. ЗЫ 2 Frankie Frankie Я не "опытный MSSQL-щик" а всего лишь самоучка. У меня нечаяно оказалась отличная книга... так всё и началось.Главное теперь найти другую ОТЛИЧНУЮ КНИГУ и продолжать изучать ТЕОРИЮ и практику. ЗЗЫ все ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:17 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mir Если хотя бы в потенциале возможны операции над частью атрибута, он не атомарен. Даже если всего 1-2 раза? Вы утверждаете, что необходимо расщеплять, если есть вероятность использования части значения столбца? mirВообще, если в запросах часто встречается LIKE, причем это предопределенные запросы , почти 100% - БД спроектирована неверно. Что такое предопределенные запросы? Те, которые очевидны на этапе проектирования? И почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:26 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Атомарнось атрибутов - понятие не абсолютное, а относительное. Поделитесь источником этого умозаключения, pls. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 15:51 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieЧто такое предопределенные запросы? Те, которые очевидны на этапе проектирования? В общем, да. FrankieИ почему LIKE это неверно? Потому, что LIKE почти всегда свидетельствует именно о нарушении 1NF. Бывают исключения, но это обычно ad hoc запросы. FrankieНе согласен, LIKE - мощная штука, глупо её игнорировать. Знаете, хорошие фундаментальные знания - еще более мощная штука. Но ведь "мы простых путей не ищем", да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:09 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie Что такое предопределенные запросы? Те, которые очевидны на этапе проектирования? И почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать. 1. предопределенные - это те запросы для которых БД разрабатывается :-) 2. LIKE - ужасно тормознутая и прожорливая штука. И поэтому ИМХО ее использовать надо лишь тогда когда ничего не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:11 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mirЗнаете, хорошие фундаментальные знания - еще более мощная штука. Но ведь "мы простых путей не ищем", да? Что-то типа того. Разбивать чуть что на столбцы - большого ума не надо. mir, Вы не ответили на очень важный вопрос с этим связанный. Повторю: авторДаже если (часть значения столбца будет использоваться) всего 1-2 раза? Вы утверждаете, что необходимо расщеплять, если есть вероятность использования части значения столбца? А пока что ваше mirПотому, что LIKE почти всегда свидетельствует именно о нарушении 1NF. Бывают исключения, но это обычно ad hoc запросы. выглядит крайне неубедительно. Могу объяснить почему. А что такое "ad hoc запросы" я не знаю. Может дело в них? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 16:24 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
А начальник не хочет поступиться принципами ввести в "поле, в идеале integer" хотя бы еще пару разрядов для хранения ID базы? На тему "умных" (интеллектуальных) ключей что-то писал Джо Селко (Joe Celko). Например, пин-код жителя города из реестра Главное - обеспечить неизменность ключа, чтобы избежать проблем с обновлениями. guest_20040621> Атомарнось атрибутов - понятие не абсолютное, а относительное. Поделитесь источником этого умозаключения, pls. Атомарность определяется рамками моделируемой предметной области. Если вы делаете CRM, то телефон контактной персоны атомарен. Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые три цифры - номер АТС, далее номер шлейфа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 17:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Атомарность определяется рамками моделируемой предметной области. Я просил назвать источник этого умозаключения. Надеюсь, это не слишком обременяющая просьба? > Если вы делаете CRM, то телефон контактной персоны атомарен. > Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые > три цифры - номер АТС, далее номер шлейфа). Что общего между "телефоном контактной персоны" и "кабельным хозяйством телефонной сети", позвольте поинтересоваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 18:42 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
E. F. Codd ACM Transactions on Database Systems, Vol. 4, No. 4, December 1979. p 410 The need for unique and permanent identifiers for database entities such as employees, suppliers, parts, etc., is clear. User-defined and user-controlled primary keys in the relational model were originally intended for this purpose. There are three difficulites in employing user-controlled keys as permanent surrogates for entities. (1) The actual values of user-controlled keys are determined by users and must therefore be subject to change by them (e.g., if two companies merge, the two employee databases might be combined with the result that some or all of the serial numbers might be changed). (2) Two relations may have user-controlled keys defined on distinct domains (e.g., one uses social security, while the other uses employee serial number) and yet the entities denoted are the same. (3) It may be necessary to carry information about an entity either before it has been assigned a user-controlled key value or after it has ceased to have one (e.g., an applicant for a job and a retiree). А LIKE всякий бывает, и хороший: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 18:43 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Кажется автор темы имел в виду тот like оторый "не очень" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 19:53 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Атомарность определяется рамками моделируемой предметной области. Я просил назвать источник этого умозаключения. Надеюсь, это не слишком обременяющая просьба? Обременяющая :) Считайте, что из головы. Если есть возражения - вперед. Нет - в сторону :) > Если вы делаете CRM, то телефон контактной персоны атомарен. > Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые > три цифры - номер АТС, далее номер шлейфа). Что общего между "телефоном контактной персоны" и "кабельным хозяйством телефонной сети", позвольте поинтересоваться? Очевидно, атрибут "номер телефона". Атомарный в первом случае и неатомарный во втором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 19:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Считайте, что из головы. Понятно. Тогда это просто ошибочная точка зрения. > Очевидно, атрибут "номер телефона". Т. е. Вы полагаете, что "номер шлейфа + АТС" эквивалентно "телефонный номер"? А если это оператор мобильной связи? а если IP-телефон? IRIDIUM? ;) Получается, что атомарность идентификатора (телефонный номер - просто некоторый идентификатор) зависит от способа связи? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 22:50 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
prof79Кажется автор темы имел в виду тот like оторый "не очень" :-) Никакого конкретного LIKE я не имел ввиду. Transact-SQL предоставляет очень широкие возможности по его использованию. В моём примере речь идёт скорее о сравнении по какой-то части ключа вроде Код: plaintext 2 Templar & guest_20040621. Вот как раз в случае с телефонами моё предложение как нельзя актуально. Я бы ни в коем случае не дробил телефонный номер! Городской, федеральный сотовый, прямой московский сотовый, междугородний... Я не понимаю, что сложно написать распознающую структуру что ли??? А споры, в общем, ведутся вокруг того расщеплять или нет. Что расщеплять? на сколько атомов? Даже если вы найдёте решение у вас получится набор столбцов, большинство из которых хранят пустые значения (или умолчания) практически во всех записях. В боле общем понимании суть состоит в том, как оптимально разбить на атомы. Я надеюсь, что господин mir выскажется по этому поводу. Большинство из здесь пишущих, судя по всему, придерживается правила "не уверен - расщепляй" , видимо потому, что синтез в данном случае и проще и быстрее, чем анализ. Повторюсь, но мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2005, 23:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Т. е. Вы полагаете, что "номер шлейфа + АТС" эквивалентно "телефонный номер"? Я полагаю, что вы занимаетесь передергиваниями. "номер шлейфа + АТС" это номер абонента городской телефонной сети. Можете проверить, набрав его на своем телефоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 00:00 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie Никакого конкретного LIKE я не имел ввиду. Transact-SQL предоставляет очень широкие возможности по его использованию. В моём примере речь идёт скорее о сравнении по какой-то части ключа вроде Код: plaintext Frankieно мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи).Конечно нет, надо быть семи пядей во лбу, чтобы сделать так, как считаете Вы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 00:25 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Я полагаю, что вы занимаетесь передергиваниями. Перечитайте Ваш [1480394]. Никаких передергиваний. Вы делаете распространенную ошибку. Есть идентификаторы (суть естественные ключи; как и все естественные ключи, они вполне могут быть уникальны если а) уникальны их регистранты, б) правила формирования могут быть формализованы и описаны). Они не зависят (или мало зависят) от предметной области. Когда Вы говорите о "кабельном хозяйстве телефонной сети", то на самом деле описываете технологию формирования такого идентификатора. Т. е. одним из результатов Вашего описания будет телефонный номер. ;) Собственно номер - набор цифр - не зависит ни от предметной области, ни от степени детализации. ;)) Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 00:32 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Вот как раз в случае с телефонами моё предложение как нельзя актуально. Абсолютно неактуально. > Даже если вы найдёте решение у вас получится набор столбцов, большинство из > которых хранят пустые значения (или умолчания) практически во всех записях. У-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 00:41 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Вы о чем, собсно, рассуждаете, об иденитфикаторах? А я об атомарности атрибутов, необязательно ключевых. Ага. Раз с телефонами так сложно получается, то возьмите пример попроще, с "ФИО". Где-то нужно хранить три атрибута, где-то - одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 00:43 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Вы о чем, собсно, рассуждаете, об иденитфикаторах? > А я об атомарности атрибутов, необязательно ключевых. Очень хороший, правильно заданный вопрос. ;) И я о них же. Среди атрибутов очень много таких, которые на самом деле идентификаторы. ;)) Которые, конечно, абсолютно необязательно ключевые. Опыт показывает, что такие атрибуты правильнее описывать совершенно определенным образом (версионность, история изменений). И опыт показывает, что атомарность таких атрибутов не зависит (или мало зависит) от предметной области. Т. е. никакой "относительностью" не пахнет. ;)) Собственно, это ровно противоположное Вашему тезису утверждение. ;) > Раз с телефонами так сложно получается, то возьмите пример попроще, с "ФИО". У-у-у... напрасно Вы так. Этот пример еще хуже. ;)) > Где-то нужно хранить три атрибута, где-то - одну строку. Фамилия, имя, отчество - суть естественный идентификатор. ;)) Не буду повторять все, что говорил по этому поводу, сразу вывод, если позволите: нет задачи, для которой можно было бы хранить фамилию, имя, отчество одной строкой. Если Вы видите такую реализацию, можете быть уверены в том, что базу данных проектировал абсолютно далекий от проектирования человек. Дейта в глаза не видевший. ;)) Ну, или задача типа записной книжки для мобильного телефона. ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 01:48 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Фамилия, имя, отчество - суть естественный идентификатор. ;)) Не буду повторять все, что говорил по этому поводу, сразу вывод, если позволите: нет задачи, для которой можно было бы хранить фамилию, имя, отчество одной строкой. Если Вы видите такую реализацию, можете быть уверены в том, что базу данных проектировал абсолютно далекий от проектирования человек. Дейта в глаза не видевший. ;)) Ну, или задача типа записной книжки для мобильного телефона. ;)) Почтовая система в качестве примера подойдет? Не слишком простая? Вот ведь незадача, не учитывает людей, учитывает адресаты. А потому ФИО всего лишь атомарный атрибут адресата, причем необязательный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 02:20 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Почтовая система в качестве примера подойдет? Не слишком простая? ;) Я не телепат. Не сталкивался со структурой данных почтовых систем. > Вот ведь незадача, не учитывает людей, учитывает адресаты. А потому ФИО всего > лишь атомарный атрибут адресата, причем необязательный. Хех, ну и при чем здесь ФИО? Если письмо будет адресовано "жирному ублюдку, который плохо пахнет", а адрес при этом будет правильным, такое письмо дойдет? ;)) Так о чем речь-то? В Вашем изложении речь идет именно об атрибуте адресата, _в общем случае не обязанным иметь ничего общего с фамилией, именем и отчеством_. ;)) Это Вы почему-то решили, что этот атрибут должен быть обязательно ФИО. Я понимаю, что Вы хотели проиллюстрировать этим примером. ОК, давайте чуть расширим наше представление об идентификаторах, которые мы используем как атрибуты. В общем случае они могут иметь суффиксы, префиксы и псевдонимы (алиасы или как Вам удобнее). Ваш пример - хороший пример использования алиасов. ;)) Аналогичный пример с телефонным номером: можно записать его буквами, а не цифрами. Буквенное обозначение - тоже псевдоним. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 02:50 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Телефон не годится, ФИО не нравится... Третий и последний раз. Артикул товара по каталогу производителя. У поставщика - неатомарный, составной на основе классификации. У покупателя-дистрибутора своя классификация, артикул поставщика атомарен, идет как внешняя ссылка. Это атрибут одной и той же сущности - товарной позиции. Свой артикул также может быть атомарен в схеме БД, несмотря на то, что различные его части (и цифровые и буквенные - ограничено полетом фантазии) имеют свой смысл. На сем предлагаю переливания из пустого в порожнее завершить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 03:06 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 MirАтомарность атрибутов - понятие не абсолютное, а относительное. Поделитесь источником этого умозаключения, pls. Поделюсь, поделюсь. Хотя вам вполне ясно ответили: TemplarАтомарность определяется рамками моделируемой предметной области. Вы дали просто потрясающий ответ: guest_20040621Понятно. Тогда это просто ошибочная точка зрения. То есть мы вам обязаны что-то обосновывать, а вы нам нет. Типа точку поставили в споре. Такой Большой Папа, мнение которого правильно по определению. Между тем, вам бы с базовыми знаниями определиться. Например: guest_20040621Среди атрибутов очень много таких, которые на самом деле идентификаторы. ;)) Которые, конечно, абсолютно необязательно ключевые. То есть вы противопоставляете потенциальные ключи (ключевые атрибуты) и атрибуты идентификаторы? Большего бреда я в жизни не видел. К вашему сведению, ключевые атрибуты и атрибуты-идентификаторы — это одно и то же. Если только вы не имели в виду что-то совсем иное (вроде «ключевые» относится только к первичному ключу, но не обязательно к потенциальному ключу). В противном случае хотелось бы выслушать развернутую аргументацию по обоснованию вашего «открытия». Далее: guest_20040621Опыт показывает, что такие атрибуты правильнее описывать совершенно определенным образом (версионность, история изменений). И опыт показывает, что атомарность таких атрибутов не зависит (или мало зависит) от предметной области. Т. е. никакой "относительностью" не пахнет. ;)) То есть у вас «опыт», и он что-то там «показывает». Это очень сильный аргумент в споре. Прям наповал. Конечно же, ни у кого больше никакого опыта по определению быть не может (Большой Папа, помним, помним). Однако здесь заметно вот что. И я, и Templar рассуждали об атрибутах вообще, т.е. об общем случае. Вне зависимости от их принадлежности к потенциальным ключам. Вы же рассуждаете только о частных случаях: *такие* атрибуты, атомарность *таких* атрибутов, *мало* зависит. И что значит «мало» зависит? Если зависит, что ж вы спорите? Если не зависит, при чем здесь «мало»? Это как быть «слегка беременной». Ну а теперь я все же объясню, почему атомарность атрибутов отношений БД относительна, а не абсолютна. 1. Реальному миру атомарность не присуща. Если бы вы изучали системологию, то знали бы, что одним из главных постулатов теории систем является утверждение о том, что каждый элемент системы в свою очередь является системой. И так до бесконечности. Древние придумали понятие атома, неделимого элемента материи, но его давно уже разложили на элементарные частицы, а те не субчастицы и т.д. 2. Таким образом, идеальная модель реального мира должна обладать бесконечным уровнем детальности. 3. Реальные модели всегда являются «огрублением» моделируемой системы. Они сознательно игнорируют те или иные аспекты оригинала, неважные для цели моделирования. И они всегда рассматривают оригинал на том или ином уровне детальности. Это еще один постулат системологии. 4. Важный аспект моделирования — его цель. Поскольку модель есть артефакт, искусственная конструкция, заведомо упрощающая оригинал в том или ином аспекте, должна быть предопределена цель такого упрощения. Любая модель всегда создается в условиях заведомо известных и заранее выбранных ограничениях, направленных на достижение заданной цели. Если цель будет иной, то и модель той же самой системы-оригинала будет создана иной. Возможно, кардинально иной. 5. База данных в конечном итоге является моделью реального мира. Еще точнее можно сказать, что моделью «части» реального мира, или «одной из моделей», но это неважно. 6. База данных создается как упрощение реального мира, как и любая модель. 7. Создание базы данных всегда преследует определенную цель, задающую соответствующие ограничения, в том числе уровень детальности моделирования. 8. Таким образом атомарность атрибутов БД полностью определяется выбранным уровнем детальности моделирования, который в свою очередь полностью определяется конкретной целью создания БД. 9. Таким образом, атомарность атрибутов БД есть понятие не абсолютное, а относительное. Почитайте, к примеру, классическую книгу Флейшман Б.С. Основы системологии. — М.: Радио и связь, 1982. — 368 с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 08:25 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Телефон не годится, ФИО не нравится... Да мне-то как раз нравится. Только Ваши примеры как-то не слишком иллюстрируют полезность Вашего подхода. Скорее наоборот. ;)) > Артикул товара по каталогу производителя. У-у-у... все плохо. Снова бесполезный пример, абсолютно аналогичный уже рассмотренным. Аргументы закончились, я так понимаю? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 08:33 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie softwarerЭто, простите, в музей юмора. Сходите в гугль и почитайте, что такое суррогатный ключ. Я знаю, что это такое. Если бы я говорил о естественном, то сразу бы сделал 3 столбца и определил их ключевыми. Тогда, если Вас не затруднит, опубликуйте пожалуйста определение, которое Вы знаете - что есть суррогатный ключ. Желательно вместе с источником, где Вы его нашли. Frankie"точка зрения сервера" означает сохраность уникальности значений столбца. Хм. Приведите, пожалуйста, определение 1НФ, где фигурировала бы "уникальность значений столбца". FrankieДанное поле анализируется только когда это необходимо. Shtock привёл крайность, я же прекрасно понимаю, что стоит за таким применением. Вы не понимаете другого - что именно эту крайность Вы и пропагандируете, пусть в скромном объеме. FrankieОбъединение столбцов в моём примере как нельзя логично. Хм. Если сравнить это с Вашим изначальным письмом - складываете впечатление, что Вы твердо рассчитывали услышать "Вы правы, а Ваш начальник - не прав". Не услышите, по крайней мере не более чем в исчезающе малом проценте высказываний. FrankieКстати будет ответить Shtock'у следующим: "давайте сразу создавать таблицы с огромным числом столбцов длины, скажем, 3. Конкатенация это же так просто!" Это действительно будет кстати - аболютно аналогично Вашему подходу. Поясняю: Теория, равно как и Shtock, полагают правильным создавать столбцы, значения которых применяются в операциях с минимальным количеством дополнительных операций. Взять значение - и все. Вы предлагаете делать "большой" столбец и при каждой операции расщеплять его. Потом - предлагаете делать "маленькие" столбцы и при каждой операции соединять их. Это именно что два одинаково неудобных подхода, в то время как оптимум - атомарные значения. FrankieПо поводу "выковыривания данных". Во-первых, на основе такой таблицы создаётся представление, в котором ключ расщеплён. Итак, вместо одного объекта делаем минимум два. Плюс - пара триггеров instead of, чтобы собирать это значение. Эффективностью на таких объемах пренебрегаем без проблем. В итоге. В итоге, вместо "создания лишнего поля" Вы создаете лишнее представление. Интересное представление об экономии :) Оккам посмеялся бы. FrankieВо-вторых, "выковыриванием" занимается чаще всего приложение, где это сделать совсем уж не проблема. То есть вдобавок имеем смешивание функций сервера и клиента. Следующий шаг - перенос логики на клиента; в самом деле, логику-то надо писать с удобными для оперирования значениями. FrankieИ ещё. 15,000 записей - это вся Формула-1 за 55 полных сезонов. Так что 15,000,000 даже для чемпионата NASCAR, где проводилось в среднем по 40 этапов с 40 участниками на каждом, 1 миллион, не то что 15 - это за гранью разумного. Дык - никто не спорит с тем, что эта задача будет работать, как бы страшно ее ни реализовать. Но в связи с этим веселят Ваши упоминания убогого MySQL. FrankieЯ долго размышлял над вопросом: вот есть гонщик - "имя фамилия". Но ведь можно расщепить на имя+фамилия? Что это даст? "Можно расщепить" не имеет отношения к атомарным значениям. Их, кстати, правильнее было бы назвать "молекулярными" - помните, "мельчайшая частица.. сохраняющая все свойства". Расщеплять имя-фамилию нужно, если в одном контексте употребляется "Имя Фамилия", в другом - "И. Фамилия", в третьем - "ФАМИ". Если везде употребляется одна и та же связка - атомарное значение и есть. FrankieСкажу ещё кое-что. Раз для всех вас мой спобос - грубая, явная ошибка, то остаётся ещё раз удивится недалёкости наших преподавателей. Ведь эта система является, ни много ни мало, моим бакалаврским дипломом, на отлично защищённым ;) Хм. Примерно пол-года назад я в одной книге, написанной преподавателями не последнего питерского ВУЗа, нашел утверждение, прямо противоречащее одной из оcновных теорем нашей с Вами науки. А Вы хотите, чтобы они заглянули, что Вы там у себя понаписали. Простите, помимо прочего, сколько из них видело Ваш диплом дальше обложки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 12:34 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieИ почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать. Как Вам сказать.. Атомная бомба - мощная штука, глупо ее игнорировать. Но для большинства прикладных задач - например, обшмонать рынок - я бы у нашей доблестной милиции и огнестрел бы отбирал. Слишком неудачные побочные эффекты. Повторюсь: задача на 15.000 записей будет нормально работать даже на i386, как бы ее ни написать. Но, если я правильно понимаю, сейчас Вы от своего диплома переходите к реальной работе, где эта логика теряет свою силу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 12:42 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> То есть мы вам обязаны что-то обосновывать, а вы нам нет. Я свои аргументы привел. А вот с ответными аргументами - как-то глуховато. ;) > То есть вы противопоставляете потенциальные ключи (ключевые атрибуты) и > атрибуты идентификаторы? Вы читаете или излагаете вместо меня? Если вместо, не буду мешать. Если читаете - читайте внимательнее. > То есть у вас «опыт», и он что-то там «показывает». Это очень сильный > аргумент в споре. ;)) Дружище, у меня нет времени описывать всю последовательность рассуждений. Это долго и нудно. Придется начинать со стандартов, метаданных, тезауруса и пр. Это не на пару абзацев и не на пятнадцать минут. Поэтому я предложил только выводы. По существу есть возражения? > Вы же рассуждаете только о частных случаях: ;) Эти частные случаи вполне себе иллюстрируют безосновательность и Ваших утверждений, и утверждений г-на Templar. > Еще точнее > можно сказать, что моделью «части» реального мира, или «одной из моделей», > но это неважно. Напротив, это крайне важно. Отметим, что модель данных [вообще говоря, любой базы данных] концептуальна, т. е. отражает представления разработчика этой структуры данных о предметной области. И я лично совсем не уверен, что эта модель сколь-нибудь адекватна в подавляющем большинстве случаев. ;) > Таким образом, атомарность атрибутов БД есть понятие не абсолютное, а > относительное. ;)) ОК, пара вопросов: берем простые распространенные атрибуты (телефонный номер; фамилию, имя, отчество человека; ip-адрес; номер ФИДО; e-mail (а лучше URI); название предприятия; идентификатор налогового учета (первое, что пришло в голову). Пожалуйста, продемонстрируйте, как будут меняться эти атрибуты (атомарность атрибутов) в зависимости от предметной области (пока не будем рассматривать специализированные структуры, где эти сущности выступали бы основным предметом описания). Опционально: как по-Вашему, для перечисленных атрибутов может существовать некая каноническая форма записи? P.S. Вы отметили, надеюсь, что я тактично проигнорировал Ваши хамские замечания и ответил исключительно по существу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 13:09 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Я свои аргументы привел.Вы, видимо, называете аргументами следующие утверждения: guest_20040621Тогда это просто ошибочная точка зрения guest_20040621Вы делаете распространенную ошибку. guest_20040621 {ваше предложение}Абсолютно неактуально. guest_20040621У-у-у... напрасно Вы так. Этот пример еще хуже. ;)) guest_20040621У-у-у... все плохо. Снова бесполезный пример. Пусть каждый судит сам, но мне набор подобных заявлений доказательным как-то не показался. На вполне резонный и конкретный пример Templar про ФИО вы ответили: guest_20040621Я не телепат. Не сталкивался со структурой данных почтовых систем. Что и требовалось доказать. Остальные ваши аргументы я уже рассмотрел в предыдущем посте. И выглядят они не лучшим образом. Ссылки на «опыт» не пойдут. Лично вас здесь никто не знает, опыт ваш никому из присутствующих не известен, даже регистрироваться на форуме вы почему-то не стали. А верить на слово, что у некой «маски» с ником guest_20040621 уж такой опыт, что всем опытам опыт... А насчет красивых фраз «придется начинать со стандартов, метаданных, тезауруса» сразу вспоминается «я знаю карате, дзюдо и еще много страшных слов». Знаете, как-то... хм, нехорошо после этого заявлять оппонентам, что у них «аргументы закончились», что «с ответными аргументами - как-то глуховато». Закончились у меня или Templarа аргументы, или не закончились, — ваши-то еще и не начинались. К сожалению, ваше любимое «У-у-у...» веским аргументом не выглядит. guest_20040621Пожалуйста, продемонстрируйте, как будут меняться эти атрибуты (атомарность атрибутов) в зависимости от предметной области. Рассмотрим один пример. Дата/время. В одних случаях может использоваться как атомарный атрибут, в других желательно разбиение на дату и время, а иногда даже разбиение даты на год, месяц, день. Критерием является наличие/отсутствие необходимости постоянно оперировать частями даты (постоянные выборки по годам, по месяцам и т.д.). Очевидно, что необходимость постоянно выполнять над датой операцию DATEPART не позволяет использовать индексы и сильно снижает производительность запросов. А если такие запросы составляют львиную долю работы, значит, рассматривать атрибут «дата/время» как атомарный нельзя, лучше разбить его на несколько атрибутов. Разумеется, это требует специальных мер по обеспечению корректности ввода/обновления, но это уже технические детали. Таким образом, взгляд на «атомарность» даты/времени сильно меняется от задач системы. Пример системы с «атомарностью» — поле «дата рождения» в системе кадрового учета. Типовые операции — атомарное занесение, атомарное чтение, сравнение. Операции над частями даты редки или отсутствуют, над частью «время» — отсутствуют. Это и есть пример «огрубления» в модели. В реальном мире человек рождается в определенный час, минуту. Это время фиксируется в роддоме. А вот для кадрового учета этот аспект неважен — так и долой время рождения. Модель от этого не становится неадекватной, так как цель такой системы полностью достижима. Пример систем с «неатомарностью» — производственные системы (часто как надстройки над АСУ ТП). Я этим лично занимаюсь. Данные поступают от датчиком и от ручного ввода потоком. Их надо прореживать. Виды отчетности по периодичности самые разные: за каждые два часа (двухчасовки), день, месяц, год, весь период. Операции выборки с условиями над отдельными частями даты и времени не исключение, а скорее правило. И т.д. Может, хватит спорить, Ясно же, что вы неправы, признайте честно. Зачем упорствовать? guest_20040621P.S. Вы отметили, надеюсь, что я тактично проигнорировал Ваши хамские замечания и ответил исключительно по существу. Дорогой вы мой человек! Не считаете ли вы хамство вот эти слова: Мистер ВежливостьУ-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите. Раз вы первый перешли на такой тон, то и я позволил себе быть с вами... попроще. Впрочем, готов принести искренние извинения за некорректную фразу «Большего бреда я в жизни не видел». Переформулирую так: Ваша мысль о том, что «есть атрибуты-идентификаторы, которые, конечно, абсолютно необязательно ключевые», мне кажется странной, нелогичной и требующей дополнительных разъяснений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:16 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ChAХороший способ похерить индексы. Как раз тот случай, когда "широкие возможности" отключают мыслительный процесс. Странно, попросили совета, Вам все вроде разжевали уже хренова туча народа, но Вы, как партизан, упрямо стоите на своем. Зачем тему-то поднимали ? Когда мне разжуют достаточно, я перестану постить по этой теме. Когда изменю свою точку зрения - сообщу. Не торопите собоытия. Если бы здешние отцы считали мой вопрос дурацким (или меня упёртым), они бы не тратили своё время на ответы в этой теме, позволяли бы себе замечания вроде тех, что использует guest_20040621. Для меня одно из приемуществ этого форума в том, что я могу поднять интересующий меня вопрос и через час уже появится несколько ответов от умнейших людей, без всяких понтов. По-моему, это очевидно. Или Вы предлагаете мне благодарить каждого за мудрый совет? ChA Frankieно мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи).Конечно нет, надо быть семи пядей во лбу, чтобы сделать так, как считаете Вы... Есть моё мнение, есть Ваше... guest_20040621Абсолютно неактуально. Есть моё мнение, есть Ваше... Хотя mir уже всё Вам сказал. guest_20040621У-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите. Есть у меня книжка, и знаю я достаточно. Вы б лучше ответили, что собственно в моём посте вызвало у Вас такую реакцию. 2 mir. 100% Respect! Пост про относительность атомарности мне очень понравился :) 2 softwarer & all Теперь главное, собственно что я получил из этой темы. 1. Для того, чтобы таблица соответствовала 1НФ все атрибуты должны быть атомарны. С этим я даже и не спорю, просто тогда получается, что любая необходимость в операции с фрагментом записи в столбце указывает либо на бессмысленность такой операции, либо на ошибку проектирования. Это так или нет??? 2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, и нет возможности сразу определить атрибуты, поскольку они могут изменяться. Я предложил в столбце (не в ключе таблицы!) хранить некую последовательность символов, обозначающие набор атрибутов и их значения. Имеются чёткие правила синтеза и анализа такой последовательности. Они тоже хранятся в таблице. Большой разницы, где проводить синтез/анализ последовательности: на сервере или у клиента я не вижу. В принципе, мне пока это вообще кажется безразличным. Но сама концепция... Ну или опус, а то может некоторые считают, что "концепция" это слишком круто для меня ;). 3. LIKE отрицательно сказывется на производительности. С этим нужно считаться, согласен, учитываю. 4. И вот ещё. А если в пределах одной БД какой-то атрибут может использоваться как атомарно, так и вместе с другими столбцами? Или это невозможно? Просто как быть если частота использования примерно равная.... Приятно удивлён популярностью темы СПАСИБО всем за помощь. Однако тема ещё даааалеко не исчерпана ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 16:49 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieС этим я даже и не спорю, просто тогда получается, что любая необходимость в операции с фрагментом записи в столбце указывает либо на бессмысленность такой операции, либо на ошибку проектирования. Это так или нет??? В общем - так. SQL создавался для манипулирования значениями в целом. Я готов в принципе допустить, что в каких-то случаях удастся обосновать целесообразность неатомарности, но это должно быть что-то весьма специфичное; сходу такое в голову не приходит. Операции с фрагментами реально могут применяться для неструктурированной информации, хранящейся или обрабатываемой в БД - текстов, XML, блобов и так далее. Это и like, и contains, и прочее - собственно SQL-часть здесь сводится к поиску, к операциям типа "подобно". Другая ниша подобных операций - представление данных; например, мы можем выводить дату в формате MM.YYYY. Frankie2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, Ох. Только не это :( Frankie4. И вот ещё. А если в пределах одной БД какой-то атрибут может использоваться как атомарно, так и вместе с другими столбцами? Или это невозможно? Просто как быть если частота использования примерно равная.... Хм. Никто не мешает атому использоваться совместно с другими атомами :) Собственно, вполне могут быть даже устойчивые комбинации - те самые имя-фамилия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:10 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
softwarerВ общем - так. SQL создавался для манипулирования значениями в целом. Значит дробление, если оно нужно, можно реализовать у клиента? softwarer Frankie2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, Ох. Только не это :( Почему? Это очередной вечный двигатель ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:18 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieЕсть у меня книжка, и знаю я достаточно. Э-э-эх, когда ж и я, наконец, смогу такое сказать - "знаю я достаточно"... Не, наверное сдохну раньше.... Frankie 2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, и нет возможности сразу определить атрибуты, поскольку они могут изменяться. Я предложил в столбце (не в ключе таблицы!) хранить некую последовательность символов, обозначающие набор атрибутов и их значения. Имеются чёткие правила синтеза и анализа такой последовательности. Они тоже хранятся в таблице. Большой разницы, где проводить синтез/анализ последовательности: на сервере или у клиента я не вижу. В принципе, мне пока это вообще кажется безразличным. Но сама концепция... Ну или опус, а то может некоторые считают, что "концепция" это слишком круто для меня ;). Тут что-то мутное и темное, не совсем я понял.... Если смысл в том, что набор атрибутов, описывающий некую сущность, не определен точно и может расширяться со временем, то что мешает просто добавлять таблицы, которые содержат дополнительные атрибуты? При этом FOREIGN KEY такой таблицы является одновременно и PRIMARY KEY для нее и родительской. А для целого описания - определить VIEW. Нечто похожее у Кодда - RM/T. Нормальная РСУБД в принципе должна позволить через запрос к системным таблицам автоматически выяснить, какие таблицы в такой VIEW нужно склеить. Если же речь идет о том, что значения атрибутов валятся в одно поле - то это, извиняюсь, и есть та самая неатомарная херня, и это очень плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:33 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieЗначит дробление, если оно нужно, можно реализовать у клиента? Неудачно ставите акценты. 1. Дробление желательно вообще не реализовывать - не создавать потребности в нем. Помимо прочего, "сборка" как операция куда удобнее дробления. 2. Иногда потребность неустранима - например, в базе хранится картинка, и нужно порезать ее на куски для puzzle, каждый раз по-своему. В этом случае желательно задвинуть эту нарезку подальше от центра системы, в дальний угол, чтобы она лежала частным особым случаем и не мешала остальному. Весьма вероятный вариант - на клиента. 3. Иногда оказывается, что основной смысл программы - именно в таких частных случаях. Тогда довольно естественное решение - сервер приложений, разработанный для таких операций. Frankie softwarerОх. Только не это :( Почему? Это очередной вечный двигатель ? :)[/quot] Примерно. Чуть оптимистичнее - но тем не менее, Вы охарактеризовали точно и емко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:38 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Интересно... вот у меня пример относительности детализации решения Например у нас есть файл с кодом класса на java и мы пишем компилятор. И у нас есть тот же файл с классом, но мы пишем CVS... Вот мне и интересно, будем ли мы во втором случае разбивать файл на слова или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:49 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 ХМ. Изменять структуру БД нельзя. Если это делать, то любая база универсальна. Другой вопрос, что делать надо аккуратно и продуманно... softwarerДробление желательно вообще не реализовывать - не создавать потребности в нем. Помимо прочего, "сборка" как операция куда удобнее дробления. Что ж, понятно :) softwarer Frankie softwarerОх. Только не это :( Почему? Это очередной вечный двигатель ? :) Примерно. Чуть оптимистичнее - но тем не менее, Вы охарактеризовали точно и емко.[/quot] Однако я не сказал своего отношения к вечному двигателю. Понимате, наверное это уже особенности меня как личности, но я не считаю вечный двигатель нереальной задачей. Конечно это не значит, что нужно пытаться сделать его во что бы то ни стало и пробовать всё что взбредёт в голову! А уж любая вещь, относящаяся к IT возможна почти наверняка и нынешние темпы развития технологий это подтверждают. Возможна и потому, что тут мы не имеем дела с "законами природы" - всё касающееся ПО дело рук человечества. Другое дело, что универсальная БД верятно не возможна в рамках реляционной модели. Может это слишком громко сказано, но я стараюсь не ограничивать себя рамками теории... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 17:57 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieОднако я не сказал своего отношения к вечному двигателю. Понимате, наверное это уже особенности меня как личности, но я не считаю вечный двигатель нереальной задачей. Если Вы обратите внимание, я тоже не высказал своего отношения. И я тоже не считаю его - в ИТ-смысле - нереальной задачей. Но у меня есть вполне определенное отношение к кавалерийским наскокам как методу его реализации. FrankieМожет это слишком громко сказано, но я стараюсь не ограничивать себя рамками теории... Это не громко сказано, это неумно сказано. Есть совершенно чеканная формулировка правильного подхода: "Я знаю законы, которые я нарушил". Вы - пока что - не знаете. И, судя по суррогатному ключу, это может и не измениться. Если изменится - обнаружите, что рамки теории намного обширнее, чем Вам сейчас кажется. Потом - посмотрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 18:07 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Вот мне и интересно, будем ли мы во втором случае разбивать файл на слова или нет? Можно, я не буду отвечать на этот вопрос? ;) ТАвАриСТЧ mir, > Рассмотрим один пример. Дата/время. Я, кажется, не просил рассматривать дату/время? Вопрос был более, чем конкретен. Отвечаем не на поставленный вопрос, а на что получилось? Это плохой способ обсуждения. Непродуктивный. По существу: дружище, продолжайте лично заниматься АСУ ТП. К счастью, это слабо связано с проектированием баз данных. ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 18:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie2 ХМ. Изменять структуру БД нельзя. Если это делать, то любая база универсальна. Другой вопрос, что делать надо аккуратно и продуманно... Изменять структуру БД можно, но по чуть-чуть и очень осторожно, и не так чтобы очень часто или даже совсем постоянно. Изменения в структуре БД происходят по мере разработки и развития проекта в связи с появлением новых требований и уточнением либо огрублением модели. Да, бывает, что некоторые изменения требуют солидных переработок приложения. Но, извините, приложение, для которого характерны постоянные изменения и непредсказеумость структуры хранимых данных в БД, - это дичайший абсурд. (сугубо личное мнение) FrankieДругое дело, что универсальная БД верятно не возможна в рамках реляционной модели. И совсем другое дело, что C.J.Date, например, считает, что универсальные БД не нужны, а нужно только правильно и полно реализовать реляционную модель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 18:17 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Данный спор действительно давний, можно почитать например: А. Усов "Ключ или отмычка". http://www.alexus.ru/russian/articles.htm А. Тенцер "Естественные ключи против искусственных ключей". http://akzhan.midi.ru/devcorner/articles/NaturalKeysVersusAtrificialKeysByTentser.html Проблема выбора первичных ключей в разработке приложений баз данных http://www.sql.ru/articles/article.aspx?aid=362 Как по мне в каждом случае, надо принимать решение которое более всего подходит, а не скатываться к догме "сурогатный" ключ... Если бы "сурогатный" ключ, был догмой, то давно бы все СУБД держали такое поле, по умолчанию в каждой таблице. Хотя нечто похожее имеется, так называемое поле RowId, которое присутствует почти во всех СУБД и неявно используется (например для поддержки неуникальных индексов, таблиц где нет primary key и т.п.), но к сожалению значение данного поля может меняться при реорганизации таблицы. А если рассматривать не OLTP, а DSS системы (хранилища). так там не приветствуются в качестве первичных ключей сурогатные ключи, так как важна скорость обработки информации, а этого можно достичь если в полях содержится действительно информация, а не автоинкремент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 18:36 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 угу, отлично. Я этого и ожидал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 18:38 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Oleg PerekhrestЕсли бы "сурогатный" ключ, был догмой, то давно бы все СУБД держали такое поле, по умолчанию в каждой таблице. Ошибка в логике. Суррогатный ключ может быть догмой для большого класса таблиц, но, например, для простых развязок многие-ко-многим ключ как элемент реляционной модели вообще не требуется (имхо не стоит плясать вокруг этого утверждения - да, в соответствии с теорией ключом в ней будут все поля, да, еще что-нибудь, но именно ключ - то есть метод адресации конкретной записи в ней - не нужен по смыслу операций с такой таблицей. Ключ если и делают, то для соблюдения уникальности). При этом я вполне согласен с тем, что решение надо принимать по месту. Oleg PerekhrestА если рассматривать не OLTP, а DSS системы (хранилища). так там не приветствуются в качестве первичных ключей сурогатные ключи, так как важна скорость обработки информации, а этого можно достичь если в полях содержится действительно информация, а не автоинкремент. Это утверждение, назовем так, очень спорно. В ряде случаев на DSS-таблицы не идет ссылок - и тогда суррогатный ключ там будет бессмысленной тратой места; вместо него используется составной естественный, и используется опять-таки как unique constraint, не более. Более того, в DSS относительно часто вообще отключают ключи для экономии ресурсов. В то же время когда идет ссылка на запись, ссылка по составному естественному ключу.. не так часто является хорошим решением, даже учитывая преимущества имеющейся при этом денормализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 19:00 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> угу, отлично. Я этого и ожидал :) Дружище, на глупый вопрос можно получить только глупый ответ. Или никакого. Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 21:08 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Бурная дискуссия :) Вам знакомо определение системы? Там, помнится, что-то про объекты говорится. До относительности атомарности атрибута сами мыслю доведете? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 23:53 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
А что будет, если вторичный ключ есть, а первичного нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 02:24 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxА что будет, если вторичный ключ есть, а первичного нету?Вы о чем? Сформулируйте вопрос яснее, а то непонятно. Кстати, что такое "вторичный ключ"? Такого зверя я нигде не встречал. Полагаю, имеете в виду альтернативный ключ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 06:36 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Вам знакомо определение системы? В чьей интерпретации, позвольте осведомиться? > Там, помнится, что-то про объекты говорится. Упс. Какие-такие объекты? Вроде до сих пор в треде речь шла о реляционных структурах? Я что-то пропустил? > До относительности атомарности атрибута сами мыслю доведете? :) Вы опять? ;) Т. е. я должен все написанное еще раз процитировать? ;) Не работает Ваше утверждение в общем случае. Примеры imho было достаточно, чтобы в этом убедиться. Какие еще аргументы нужны? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 09:31 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Одна из ошибок Флагмана от Инфософт - наличие такого первичного ключа - кода подразделения, в котором отражается его подчиненность. Выбирать приходится по LIKE. Сколько это проблем породило .. в основном при сопровождении и в местах стыковки с другими системами, к Флагману не имеющими отнощения. Одно и тоже подарзеделение не дай бог менят подчиненность (у нас это происходит 2-5 раз в месяц в среднем, а в урожайные месяцы и по 100) и все .. в других системах нужно выполнять акткуализацию. Иногда механизма проследить, что это реально тоже самое подразделение, нет. Приходится в ручнную ..Вообщем поубивал бы таких проектировщиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 10:04 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 не тебе судить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 10:45 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> не тебе судить Вопрос кому задан? Мне он показался исключительно тупым. ;) Извините, если Вас это обидело. P.S. Странно, что никто не обратил внимание на пример с атомарностью времени. Т. е. все согласны с тем, что время может быть, а может не быть атомарным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:33 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
MainFrameВообщем поубивал бы таких проектировщиков. Там, где есть необходимости осуществлять частые изменения такой ключ безусловно неприемлим! Я говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил. Пример с ключом в заглавном посте темы это лишь тривиальный случай. Если говорить шире - я считаю, что нет ничего предосудительного в том, чтобы использовать такой мощный инструмент как сервер баз данных так, как я считаю нужным. Тем более, что серверу оказывется всё равно, что там за нормальная форма. Понимаете, я скорее предпочту написать лишний обработчик или запрос, чем ломать голову над атомарностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:34 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieЯ говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил. Пример с ключом в заглавном посте темы это лишь тривиальный случай. А правила эти определяются где - на клиенте? FrankieЕсли говорить шире - я считаю, что нет ничего предосудительного в том, чтобы использовать такой мощный инструмент как сервер баз данных так, как я считаю нужным. ... и большой королевской печатью колоть орехи... FrankieТем более, что серверу оказывется всё равно, что там за нормальная форма. Понимаете, я скорее предпочту написать лишний обработчик или запрос, чем ломать голову над атомарностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:51 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
а ограничения целостности не нужны ? и связывать таблицы по фрагментам этих полей типа ТИП_ХРАНЯЩИЙ_ВСЕ_ЧТО_УГОДНО ? где-то мне здесь чудится отсутствие фундаментального понимания теории.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 11:54 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Павел, т.е. в таблице dogovor поле client_id не зависит от document_id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
нумерацию документов имелось в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:57 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Ладно, не знакомо, так незнакомо, проехали. Нет, не проехали. Какое определение Вы имели в виду? Каких систем и каких объектов? > Примеры были приведены для опровержения вашего "общего случая" > независимости атомарности от рамок рассматриваемой системы. Хех, ну х. з., кто с логикой дружит, а кто нет. Вы утверждали (и утверждаете, насколько я понял), что атомарность атрибутов относительна. Я утверждал (и утверждаю), что есть такие атрибуты, для которых это утверждение в общем случае неверно. Для обоснования своей точки зрения я использовал _приведенные Вами_ примеры, когда атрибуты, которые по-Вашему относительно атомарны, таковыми не являлись. Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна. Читать-то Вы, надеюсь, умеете? Далее я просил (тАвАриСТЧА mir, правда, но это как бы неважно) показать, как будет меняться атомарность атрибутов (список в сообщении был) в зависимости от предметной области. Вместо ответа получил полную ахинею об атомарности времени (это просто прорыв в проектировании какой-то; наверное, навеяно _личным участием_ тАвАриСТЧА mir в разработке АСУ ТП). Что нелогично и где именно, по-Вашему? > Поэтому, чтобы не сойти за болтуна, потрудитесь таки обосновать свое общее > утверждение более весомыми утверждениями, чем "это очевидно". Не понимаю, какие еще обоснования Вам нужны. Что непонятно в написанном? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 16:08 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 gardenman. Отлично! Мне действительно понравилось. Возможно это прозвучит странно, но другого решения такой задачи я и не видел. gardenmanкогда я что-то проектирую я менньше всего думаю о нормальных формах. Просто несколько принципов: Каждое значение атрибута должно появляться по возможности только 1 раз, в одной таблице и в одной строке. Количество объектов (индексы, таблицы и прочее) должно быть минимальным. Должна осуществляться жесткая поддержка ссылочной целостности. Подписываюсь под каждым словом :) А насчёт идентификации личности по "ФИО, дата и место рождения" - вообще неправильно. Во-первых, что такое место рождения? Роддом что ли? Во-вторых, бывают, знаете ли, полные тёзки, родившиеся в один день. А если у нас люди с разным гражданством и в документе ФИО (если есть О) написаны разным алфавитом? У арабов например вообще имена гигантские, а в корее очень много однофамильцев... Неее, "ФИО, дата и место рождения" это никак уж не гарантирует уникальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 16:53 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 guest_20040621 Да конечно мы несем ахинею, конечно, тактичный вы наш. Известно же, что помимо вас никто в принципе ничего не знает и знать не может. Вы, в общем-то поэтому и не обязаны стрго аргументировать свои взгляды. Это пусть другие пишут детальные посты. А вам можно просто сказать "Тогда это просто ошибочная точка зрения". И все. А если и этого мало, тогда добавить "У-у-у...". Такой аргумент уж точно никто не перешибет. А если серьезно, оспорьте любой из моих постов. С реальными возражениями. К сожалению, помним, что у вас "нет времени описывать всю последовательность рассуждений. Это долго и нудно". Конечно же, если бы время было, вы бы нас... С левой "стандартами", с правой "метаданными", контрольный в голову - "тезаурус". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 16:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
авторОтлично! Мне действительно понравилось. Возможно это прозвучит странно, но другого решения такой задачи я и не видел. dogovor->pasport->klient выбрать договоры с указанием на нынешних фамилий клиентов и фамилий на момент заключения договора select dogovor.nn, pasport.fio (select top 1 fio from pasport pp where pasport.klient_id=pp.klient_id) as current_fio from dogovor join pasport on pasport.id=dogovor.pasport_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 17:52 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
тьфу, дату забыл select dogovor.nn, pasport.fio (select top 1 fio from pasport pp where pasport.klient_id=pp.klient_id order by data_vidachi) as current_fio from dogovor join pasport on pasport.id=dogovor.pasport_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 17:54 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> А если серьезно, оспорьте любой из моих постов. С реальными возражениями. Легко. Например, Ваш пример со временем. Речь идет не об изменении атомарности, а о точности измерения и декомпозиции. Как у времени может меняться атомарность, если по сути это число + единица измерения + точка отсчета, поясните, пожалуйста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 18:35 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
FrankieНеее, "ФИО, дата и место рождения" это никак уж не гарантирует уникальности. C теоретической точки зрения Вы правы - и при учете населения используется, если не ошибаюсь, номер свидетельства о рождении. Но в то же время в практике госучреждений, в практике обработки плохих данных, импорта всяких ублюдочных dbf-ов, если не текстовых файлов - используется именно этот набор атрибутов. Хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 18:39 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Вы утверждали (и утверждаете, насколько я понял), что атомарность атрибутов относительна. Я утверждал (и утверждаю), что есть такие атрибуты, для которых это утверждение в общем случае неверно. Для обоснования своей точки зрения я использовал _приведенные Вами_ примеры, когда атрибуты, которые по-Вашему относительно атомарны, таковыми не являлись. Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна. Читать-то Вы, надеюсь, умеете? Короче говоря, по-вашему "атомарность _любых атрибутов_ абсолютна и неизменна" - ложное утверждение. Согласен. Это означает, что по-вашему, существуют атрибуты, атомарность которых относительна. Осталось сделать шажок и объяснить, с какой стати атомапрность остальных атрибутов абсолютна. Ну, вот так их господь создал. Вырезал из гранита. Я потому и пытался вас навести на определение системы, как совкупности объектов (элементов) и их связей. Любая декомпозиция на элементы относительна. Если вы помните историю, то сам физический атом в начале считался эээ... атомарным :)) Но потом оказалось, что он тоже состоит из других элементов. Соответственно, любая ваша декомпозиция системы на сущности, связи и атрибуты также относительна цели моделирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 19:14 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Осталось сделать шажок и объяснить, с какой стати атомапрность остальных > атрибутов абсолютна. Хех, их абсолютность - штука тоже условная. ;) Попробую объяснить. [сильно упрощенно] Если атрибут может быть представлен в виде [грантор][сущность] + [идентификатор_грантора], такой атрибут будет атомарным для всех баз данных, исключая базы данных грантора. > Ну, вот так их господь создал. Вырезал из гранита. На самом деле это просто идентификаторы, которые некто/нечто раздает монопольно/условно монопольно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 19:34 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 [сильно упрощенно] Если атрибут может быть представлен в виде [грантор][сущность] + [идентификатор_грантора], такой атрибут будет атомарным для всех баз данных, исключая базы данных грантора. Что есть грантор? Надеюсь, не фонд Сороса ? На самом деле это просто идентификаторы, которые некто/нечто раздает монопольно/условно монопольно. Да забудьте вы про идентификаторы на время. Не плодите лишние сущности. В модели "сущность-связь" на верхнем уровне нет никаких идентификаторов. Они появятся позже, когда возникнет необходимость детализации в рамках реляционной модели. А если в рамках сетевой, например, так и не появятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 23:03 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Изучайте логику. В частности т. Геделя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 23:29 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Что есть грантор? Надеюсь, не фонд Сороса? [Публичный] генератор идентификаторов. > Да забудьте вы про идентификаторы на время. Не плодите лишние сущности. В > модели "сущность-связь" на верхнем уровне нет никаких идентификаторов. Они > появятся позже, когда возникнет необходимость детализации в рамках > реляционной модели. А если в рамках сетевой, например, так и не появятся. Вроде пока мы в рамках реляционной, так что ни о чем забывать не будем. ОК, попробуем по-другому. Есть достаточно большое количество реляционных баз данных. Представьте, что мы получили возможность описать эти базы данных в некоторой специально для этого созданной структуре. Окажется, что некоторые сущности часто выступают в роли атрибутов других сущностей, причем одинаковым образом (я упоминал стандарты, метаописание и тезаурус подразумевая именно задачу создания такой структуры). Более того, за пределами баз данных владельца базы данных, где они являются основным предметом описания, они везде будут выступать в одинаковой роли. Для практического применения нам даже не нужна структура баз данных этого владельца: существенную для нас часть (имя владельца базы данных (или группы владельцев, или условного владельца) и имя этой сущности) мы можем получить и не зная внутренней структуры. Попробую провести такую аналогию: представьте, что атрибут всегда принимает значения из строго определенной таблицы, заполненной некоторым генератором. Для практических задач не нужно знать правил работы генератора, достаточно знания факта, что все возможные значения атрибута находятся в строго определенной таблице. Какую бы сущность мы не описывали, рассматриваемый атрибут всегда будет принимать значения только из этой таблицы. Вот такие "однотабличные" атрибуты не будут относительно атомарными. ;) Примеры я приводил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 00:04 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621ОК, попробуем по-другому. Требование атомарности напрямую следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения). При этом сам домен - допустимое множество значений данного типа - определяется относительно моделируемой системы. Говоря о ваших "табличных" генераторах вы не замечаете (или не хотите замечать), что суть такого приема проста - вы искуственно вводите в систему(ы) домен (причины такого решения мы не рассматриваем). Этот домен, конечно, будет атомарен по определению. По вашему личному определению (пока не вырвется за рамки системы, подобно номерам паспортов или соцстраха). Вы сознательно вводите внемодельный артефакт. И пытаетесь на этой основе показать, что существуют (где за пределами вашей реализации?) сущности, атрибуты которых "абсолютно" атомарны :)) Теперь вернитесь к началу Атомарность атрибутов - понятие не абсолютное, а относительное. Вы пытаетесь опровергнуть это утверждение введением в сущность искусственных (служебных, системных) атрибутов, которые к тому же не выходят за рамки реализации конкретной системы(систем) :)) Предлагаю таки закруглиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 02:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> А если серьезно, оспорьте любой из моих постов. С реальными возражениями. Легко. Например, Ваш пример со временем. Речь идет не об изменении атомарности, а о точности измерения и декомпозиции. Как у времени может меняться атомарность, если по сути это число + единица измерения + точка отсчета, поясните, пожалуйста? Вот это уже разговор. 1. Ваша мысль о том, что (упрощаю) речь идет не об изменении атомарности, а о декомпозиции, представляется мне странной и нелогичной. Что такое декомпозиция? По определению разложение, разбиение целого на составные части , то есть смена уровня детальности . То есть декомпозиция есть в точности изменение атомарности . Таким образом, ваша сентенция внутренне противоречива. 2. Теперь еще раз: время в реальном мире есть процесс непрерывный. Дискретизация времени — единственный способ иметь с ним дело в модели, но огрубление при этом неизбежно (по определению). Степень дискретизации и само представление такой характеристики как «момент наступления события» может быть разной и определяется целью создания модели (в нашем случае — базы данных). Об этом в точности я и говорил. То есть для частной задачи мы можем представить характеристику «момент наступления события» как атомарное значение типа DATE (представление) с точностью до дня (степень дискретизации). Пример: атрибут «дата рождения» в системе кадрового учета. Для другой частной задачи мы можем представить характеристику «момент наступления события» как совокупность атрибутов [Год: INT, Месяц: INT, День:INT, Время: TIME] (представление) с точность до миллисекунды (степень дискретизации). Пример: замеры с датчика в промышленной системе. Вывод: как детальность, так и способ представления информации о предметной области в общем случае не абсолютны, а относительны. Они определяются целью создания системы и ограничениями, налагаемыми на систему. Разумеется, никто не отрицает, что некоторые характеристики некоторых сущностей от системы к системе практически не меняют ни представление, ни детальность. Вес и рост человека обычно вещественное число, суррогатные первичные ключи всегда атомарны (хотя представление их меняется: то INT, то LONG INT, то GUID). Такие примеры есть. Тем не менее, я бы прокомментировал их наличие вовсе не тем, что общее правило «не работает», т.е. не является «общим». Тут другое. Возьмем «рост». Ничто не гарантирует, что не появится система, требующая «декомпозировать» рост человека на, к примеру, [«длина ног», «длина туловища», «длина шеи», «длина головы»]. То есть это вопрос потребности, а не принципа. Теперь возьмем суррогатные первичные ключи. Они пожалуй всегда будут атомарными. Однако не забудем, что они не «настоящие» характеристики. Это артефакты, искусственно создаваемые по искусственным правилам. Поэтому законы реального мира на них вообще слабо влияют. Поскольку вы сказали, что «Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна», то по сути с высказанной мной точкой зрения согласны. Так и завершим спор, если спорить не о чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 07:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Предлагаю таки закруглиться. ОК. Пара пояснений. > Требование атомарности напрямую следует из определения домена как > потенциального множества значений простого типа данных, Принципиальная разница между доменом и приведенным примером. Публичные идентификаторы имеют определенного грантора и применимы исключительно к определенным сущностям. Иначе чего б я сразу не провел аналогию с доменами? > вы искуственно вводите в систему(ы) домен Ничего не ввожу. Я хочу показать Вам, что существуют формальные критерии определения условно абсолютных атрибутов. Кроме того, ничего более. > пока не вырвется за рамки системы, подобно номерам паспортов или > соцстраха Даже вне рамок системы номер паспорта _всегда_ будет оставаться номером паспорта. В любой предметной области. ;) > Вы пытаетесь опровергнуть это утверждение введением в сущность > искусственных (служебных, системных) атрибутов, которые к тому же не > выходят за рамки реализации конкретной системы(систем) :)) Это я настолько плохо излагаю или Вы невнимательно читаете? ;)) Я никуда не ввожу никаких новых артефактов. Просто показать существование абсолютных атрибутов вполне можно их перечислением. Хотелось решить другую задачу: предложить формальные критерии определения таких атрибутов. Безотносительно конкретной реализации. Получилось с переменным успехом. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:40 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mir, Вы полагаете, если я начну представлять вещественные числа в экспоненциальность форме, их атомарность поменяется? ;) > То есть декомпозиция есть в точности изменение атомарности. Таким образом, > ваша сентенция внутренне противоречива. Нет здесь противоречия. Ваша декомпозиция в данном случае - изменение формы представления, а не изменение атомарности. Суть характеристики не меняется. > для частной задачи мы можем представить характеристику «момент > наступления события» как атомарное значение типа DATE Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только. Согласитесь, это как бы совсем не изменение атомарности. Наличие в разных СУБД различных типов данных, связанных со временем - просто средство упростить жизнь разработчику и пользователю. > Так и завершим спор, если спорить не о чем. ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 10:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только. Согласитесь, это как бы совсем не изменение атомарности.Я бы согласился с Вами, если бы только сегодня не наступил на эти грабли. Именно со временем. В таблице, предполагающей хранение только даты (без времени), оказались данные с ненулевым значением часов/минут. В результате система начала сбоить. Откуда там такие данные - пока не понял, но буду бить по рукам того, кто туда эту хрень заносит. Скорей всего себя самого, но это не так уж и важно... Для меня выходом было бы наличие в базе отдельно типа DATE, TIME & TIMESTAMP (DATETIME), но увы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:09 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Я бы согласился с Вами, если бы только сегодня не наступил на эти грабли. Павел, а я-то здесь при чем? Кто-то криво спроектировал базу данных, кто-то туда чего-то не то написал, а шишки на меня? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:18 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Где шишки? Какие шишки? Просто в данном случае "дата" никак не должна быть "timestamp", вот и всё. Гранулированность в данном случае - не вопрос представления , как пытаетесь утверждать Вы, но требование логики системы . Вот и всё. Базу кстати я проектировал. В этом месте кривовато получилось, да.... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:52 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Принципиальная разница между доменом и приведенным примером. Публичные идентификаторы имеют определенного грантора и применимы исключительно к определенным сущностям. ...и таким образом, атомарны относительно определенного генератора, определенных сущностей и определенных систем, в которых эти сущности используются. Даже вне рамок системы номер паспорта _всегда_ будет оставаться номером паспорта. В любой предметной области. ;) Из этого никак не следует, что номер паспорта останется атомарным в любой предметной области. Например, в паспортно-визовом учете иностранцев/мигрантов. Чтобы уменьшить ошибки ввода вам придется анализировать форматы номеров в зависимости от стран. В самом номере есть косвенная информация о месте и времени выдачи, т.е. даже сторонняя (вне МВД) аналитика по разрядам и группам дает информацию о распределении пулов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 12:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Просто в данном случае "дата" никак не должна быть "timestamp", вот и всё. ;) Ну просто неверно в данном конкретном случае архитектор выбрал precision. И не проверяет значение дополнительно. > Гранулированность в данном случае - не вопрос представления, как пытаетесь > утверждать Вы, но требование логики системы. Вот и всё. ;) Неважно, какими именно соображениями выбрана precision. Это может быть логика системы, недостаток информации, другие ограничения, - факт в том, что информации больше, чем содержиn timestamp, взять неоткуда. А уменьшать это количество информации или использовать более удобное представление - собственно, все возможные действия разработчика. ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 13:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Frankie Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации. ... Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место. Нифига ты не повышаешь. Более того, если ты в одно поле запихиваешь три - нарушаеть таким образом 1НФ. Это конечно не так страшно, но все же... Frankie Более общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не Если LIKE по ключу - это как-то нелепо выглядит. Frankie процедур. Мне интересно ваше мнение по этой проблеме. Твой друх прав по крайней мере в одном - нельзя в первичный ключ запихивать что-то хоть как-то относящееся к предметной области, логике работы программы и тому подобному. Т.е. можно, конечно, но чревато последствиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 13:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Еще хотел сказат. Если такое добро устроить НЕ в РК - то вполне себе хорошее решение (ну если конечно сознаешь, что это дублирование данных и это не пугает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 13:59 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> ...и таким образом, атомарны относительно определенного генератора, > определенных сущностей и определенных систем, в которых эти сущности > используются. Абсолютно верно. Вместе с тем мы можем (не всегда, но очень часто) описать границы применимости этих идентификаторов. Ничто не мешает использовать несколько генераторов, которые удовлетворяли бы нас с точки зрения полноты описания предметной области. ;) > Из этого никак не следует, что номер паспорта останется атомарным в любой > предметной области. Абсолютно верно. Для баз данных грантора это условие не выполняется. Я специально об этом упоминал. Консенсус? ;)) На самом деле такой подход позволяет формализовать описание достаточно большой группы часто встречающихся атрибутов. А другой задачи я, в общем, себе и не ставил. ;) Хотя некоторые формальные следствия могут показаться интересными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 14:05 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
9я к тому, что сейчас 80 Гиг стоит примерно 80$. т.е 1Гиг стоит 1 доллар! Сегодня разговоры о экономии места потеряли свою прежнюю актуальность. Полный бред. Возьми спроектируй и прохрани таблицу в 100-200 млн записей - тогда посмотрим, как ты изменишь свое мнение. Когда 1 byte * 10**8 ~= 100 Mbyte ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 14:11 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только.Во первых, сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. То есть если важна производительность массированных выборок, включающих условия на частях даты (скажем, год или месяц), никакой precision тут не поможет. Это первое. Второе. К примеру, MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не поддерживает. Я перерыл BOL, но такого не нашел (если неправ, пусть меня поправят). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 14:37 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. Мы не рассматриваем практические аспекты выбора формата хранения атрибутов. > MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не > поддерживает. Насколько я знаю, ни одна из СУБД не поддерживает. ;) Поправьте, если ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 15:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mirВо первых, сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. Ну это, кстати, не слишком-то верно. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 17:56 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 softwarer Браво!.. Еще давайте вспомним об INDEX_EXTENSION а еще вспомним номера телефонов, КЛАДР, ОКПО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 18:45 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenman2 softwarer Браво!.. Еще давайте вспомним об INDEX_EXTENSION Я в данном случае просто нагло придираюсь. Безусловно, мелочь, но не люблю неверных утверждений. Хотя идея индексировать телефоны по первым трем цифрам, безусловно, не слишком продуктивна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 18:48 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Клон Interbase, Yaffil умеет строить индексы по выражениям, в стиле клиппера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2005, 18:50 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Если ключ есть результат вычисления некоторого выражения(необязательно только на базе значений полей из таблиц), так как он будет смотреться в плане атомарности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2005, 02:39 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Этот вопрос дерзну адресовать строгому господину guest_20040621 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2005, 02:46 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
softwarer mirВо первых, сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. Ну это, кстати, не слишком-то верно. (...) Уважаемый, вот вам выдержка из BOL (T-SQL): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Вы говорите "не люблю неверных утверждений." Слишком смелое заявление. Если уж взялись меня поправлять, надо было указать, что некоторые СУБД умеют (как частный случай), а некоторые не умеют. Кстати, насколько я знаю, в стандарте SQL-92 ничего не говорится об индексах и о том, как их создавать. Тем не менее можно смело утверждать, что подавляющее большинство СУБД поддерживает индексы на столбцах и лишь некоторые - на выражениях. (Кстати, я в курсе о возможности создания в MSSQL вычислимого столбца, можно об этом не поминать). То есть мое утверждение все же более "общее", чем ваше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 09:14 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. Мы не рассматриваем практические аспекты выбора формата хранения атрибутов. > MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не > поддерживает. Насколько я знаю, ни одна из СУБД не поддерживает. ;) Поправьте, если ошибаюсь. То есть все ваши рассуждения по указанному вопросу можно смело дезавуировать. Вот и чудненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 09:16 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mirУважаемый, вот вам выдержка из BOL (T-SQL): Хм. А не секрет, сколько страниц назад в этом топике последний раз упоминалось что-то, связанное с BOL? Как минимум две трети топика идет.. сугубо теоретический разговор. Впрочем, Вы меня чуть удивили. Я полагал, что MSSQL умеет индексировать вычисляемые поля (что, согласитесь, есть ухудшенный вариант индексирования по выражению). mirКак видим, никакого индекса по выражению на столбце В MS SQL Server 2000 нет. Значит, будет :) Аналитические функции, если не ошибаюсь, туда уже добавляют. mirТем не менее можно смело утверждать, что подавляющее большинство СУБД поддерживает индексы на столбцах и лишь некоторые - на выражениях. Я бы сказал иначе - в некоторых СУБД такая операция доступна непосредственно, а в некоторых придется извращаться. mir(Кстати, я в курсе о возможности создания в MSSQL вычислимого столбца, можно об этом не поминать). Хм. То есть видимо таки умеет их индексировать? mirТо есть мое утверждение все же более "общее", чем ваше. Безусловно. Вы сказали весьма обще: "СУБД не умеет" (обратите внимание - СУБД, а не MSSQL). Я сказал "не так уж и верно" и привел частный пример того, когда Ваше утверждение ложно. Безусловно, Ваше утверждение более обще. Но мое пока что представляется мне более верным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 09:33 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> То есть все ваши рассуждения по указанному вопросу можно смело > дезавуировать. Вот и чудненько. Откуда это следует, позвольте поинтересоваться? АСУ ТП навеяло? ;) ТАвАриСТЧ mir, я не услышал от Вас вообще ни одного аргумента. Видимо, иногда (как в данном случае) опыт _личного участия_ играет отрицательную роль. ;)) Спасибо за Ваши ответы. На будущее: если утверждаете что-то, будьте готовы это аргументировать. ;)) Hint: знание SQL или конкретной СУБД отнюдь не эквивалентно навыкам проектирования. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 10:53 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> То есть все ваши рассуждения по указанному вопросу можно смело > дезавуировать. Вот и чудненько. Откуда это следует, позвольте поинтересоваться? Ну, напомню, что чисто теоретический аспект я вам разложил по полкам уже давно. Возражений не было. Как перешли к примерам (т.е. практическому аспекту), вы сказали, что таковые вы не рассматриваете. А все ваши высокомудрые рассуждения о precision для datetime вообще, оказывается, оторваны от реалий. Вот и выходит, что толку с ваших постов, как с козла молока :). Чему ж удивляетесь? guest_20040621АСУ ТП навеяло?А это вы о чем? С каким-то маниакальным упорством их поминаете. Видимо, вам чудится, что это как-то ко мне относится или как-то меня уязвляет... В молоко, внимательный вы наш (для вас это характерно), я АСУ ТП как таковыми вообще не занимаюсь. Или вам нравится в открытую дверь ломиться? :) guest_20040621я не услышал от Вас вообще ни одного аргумента.Старая песня... guest_20040621На будущее: если утверждаете что-то, будьте готовы это аргументировать. ;))Хорошо бы вы это поняли когда-либо. К сожалению, до столь же последовательной и развернутой аргументации как у меня вам еще расти и расти. Поэтому вы и «спорите» фразами типа «Тогда это просто ошибочная точка зрения» (ноль обоснований), «Вы делаете распространенную ошибку» (ноль обоснований), «Снова бесполезный пример» (ноль обоснований) и пр. А когда речь зашла о настоящих аргументах, у вас «нет времени описывать всю последовательность рассуждений. Это долго и нудно». Оно и понятно, голословно заявить, что оппонент неправ, легко, а вот обосновать свою позицию — это долго и нудно. Просто удивительно, как вы приписываете другим свои собственные «грехи»: поверхностные знания и неумение аргументировать. guest_20040621Hint: знание SQL или конкретной СУБД отнюдь не эквивалентно навыкам проектирования. ;) Рад, что вы начинаете это понимать. P.S. Вроде только-только перешли от "уколов" в конструктивное русло... Видно, что-то вам неймется. Неужто не устали получать от меня конкретные "плюхи"? Вы что, батенька, мазохист? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 12:35 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 softwarer В общем-то, со всем, что в сказали, я согласен. Одна поправка: softwarer Я полагал, что MSSQL умеет индексировать вычисляемые поля (что, согласитесь, есть ухудшенный вариант индексирования по выражению).Так-то оно так, но поскольку придется создать дополнительно поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 12:39 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
(косяк вышел с отправкой, продолжаю) Так-то оно так, но поскольку придется создать дополнительно поле, атомарность-то и меняется. То есть формально будет несколько полей, а не одно поле. Что и требовалось доказать (в споре об атомарности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 12:41 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mirТак-то оно так, но поскольку придется создать дополнительно поле, атомарность-то и меняется. То есть формально будет несколько полей, а не одно поле. Что и требовалось доказать (в споре об атомарности). Я не сторонник сугубо формальных тонкостей. С точки зрения проектирования, модели данных, между хранимыми вычисляемыми полями и нехранимыми (например, вычисляемыми во view) нет никакой разницы. А фундаментальные вещи (aka "атомарность") не могут зависеть от прикладных вопросов физической реализации. Практически - у Oracle есть одна фича, которую можно использовать для индексирования "части значения", у MSSQL - другая. У MySQL - может что и не удастся. Но сама по себе задача "индексирования части значения" - физическая; возможность и реализация такого индексирования в той или иной БД никак не влияет на атомарность того или иного атрибута в конкретной модели данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 12:58 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Ну, напомню, что чисто теоретический аспект я вам разложил по полкам уже > давно. Не припоминаю. Ахинеи - да, было написано достаточно. За аргументы она не прокатила. ;)) > Возражений не было. Возражения как были, так и остались. Более того, в приведенном Вами примере Вы умудрились сделать ошибку. Браво, тАвАриСТЧ. ;)) На месте Вашего работодателя я бы задумался о Вашей квалификации. > Как перешли к примерам (т.е. практическому аспекту), вы сказали, что > таковые вы не рассматриваете. Дружище, мне интересны примеры по теме, а не примеры вообще. Разберитесь сначала с арифметикой, а потом, если получится, рассуждайте об алгебре. ;)) > А все ваши высокомудрые рассуждения о precision для datetime вообще, > оказывается, оторваны от реалий. Ага. Они абсолютно оторваны от любимого Вами мелкомягкого хм... ну, Вы поняли. Видимо, Вы полагаете, что BOL - это монопольное изложение истины, а M$ SQL - эталонная СУБД. Напрасно. ;)) > Вот и выходит, что толку с ваших постов, как с козла молока :). Дружище, думаю, что для Вас они действительно бесполезны. ;)) > P.S. Вроде только-только перешли от "уколов" в конструктивное русло... Видно, > что-то вам неймется. Неужто не устали получать от меня конкретные "плюхи"? ;))) Бугага, как принято нынче говорить. Насмешили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 13:30 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
softwarerА фундаментальные вещи (aka "атомарность") не могут зависеть от прикладных вопросов физической реализации.А вот здесь я бы не согласился. С одной стороны есть реальный мир, в котором весьма мало «абсолютного», и все довольно относительно. Атомарность ему вообще-то не присуща (я об этом ранее говорил). На другом «полюсе» — конкретная база данных, спроектированная под конкретную задачу. Задача проектирования (в конечном итоге) состоит в отображении реального мира на его модель — БД (еще правильнее сказать на информационную систему, но это опустим). При таком отображении приходится учитывать все ограничения, какие есть: от потребностей заказчика в обработке данных до плюсов и минусов конкретной СУБД. В этих условия некоторая характеристика может быть представлена как атомарным атрибутом, так и набором атомарных атрибутов. Тот же «адрес» для одной задачи всего лишь строка с каким-то там текстом, а для другой — целая «ботва» из номера квартиры, номера дома/корпуса, названия улицы/проспекта/площади/тупика/переулка, названия населенного пункта, страны и все это со ссылками на кучи справочников. Данный пример, бес сомнения, указывает на особенности задачи, но не СУБД. В то же время (вернемся к примеру с датой/временем), если, скажем, выбранная СУБД не позволяет эффективно работать с частями даты/времени, то можно или сменить СУБД (тоже вариант), либо, если это неприемлемо, изощряться по иному. Тут уже скорее учет ограничений СУБД. Согласитесь, трудно проектировать серьезную БД, совсем не учитывая специфику СУБД. То есть можно, но заплатишь чем-то иным, непременно. К сожалению, СУБД весьма отличаются друг от друга, это факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2005, 14:47 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
mir......При таком отображении приходится учитывать все ограничения, какие есть: от потребностей заказчика в обработке данных до плюсов и минусов конкретной СУБД..... Именно поэтому в проектировании идет разделение на "логическую" и "физическую" модели. Допустим, в логической модели присутствует сущность "активные клиенты". В физической модели она может быть представлена вьюхой. В физической модели для другой БД - хранимой процедурой. А потом в целях эффективности - переделана на хранимый объект (таблицу, материализованную вьюху). Логическая модель при всех этих манипуляциях - остается неизменной. Именно эту разницу я подчеркивал, хотя возможно не выразил достаточно четко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 17:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
gardenmanНо странное дело большинство систем построено по стандартной схеме, когда атрибуты ФИО b id клиента лежат в одной таблице. В одном из довольно старых проектов для довольно большой организации мы пришли к тому, что сущность Человек не имеет иных атрибутов кроме суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на эту дату). Возможно это крайность, но не бессмыслица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 16:46 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Допустим пол может быть реально изменен в один прекрасный день. А дата рождения тоже изменялась и их хранилось несколько на некоторых индивидуумов? -- Regards Alexander Artamonov "ModelR" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1513937@sql.ru... gardenman Но странное дело большинство систем построено по стандартной схеме, когда атрибуты ФИО b id клиента лежат в одной таблице. В одном из довольно старых проектов для довольно большой организации мы пришли к тому, что сущность Человек не имеет иных атрибутов кроме суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на эту дату). Возможно это крайность, но не бессмыслица. Тема Ответить Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 19:07 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
ModelRВ одном из довольно старых проектов для довольно большой организации мы пришли к тому, что сущность Человек не имеет иных атрибутов кроме суррогатного ИД. Для этого вывода нужна весьма специфичная задача. Поскольку, с одной стороны, "в общем случае" эта сущность таки обладает рядом общих атрибутов - скажем, родители, дата и место рождения, номер регистрационной записи; с другой стороны, в конкретных задачах как правило не требуется история по многим атрибутам (каким именно - зависит от задачи). Задачу, где все необходимые атрибуты неатомарны, придумать наверное можно - но сходу затруднюсь назвать хоть что-нибудь близкое. Я наиболее близко подошел к такой структуре в проекте для страховой компании. Поскольку у человека может поменяться практически все, там были сделаны сущности "Человек" и "Текущие данные человека". Но и там нашлось то, что дублировать не стали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 19:15 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> В одном из довольно старых проектов для довольно большой организации мы > пришли к тому, что сущность Человек не имеет иных атрибутов кроме > суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на > эту дату). Возможно это крайность, но не бессмыслица. Порадовали [без подвоха]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 19:43 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> В одном из довольно старых проектов для довольно большой организации мы > пришли к тому, что сущность Человек не имеет иных атрибутов кроме > суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на > эту дату). Возможно это крайность, но не бессмыслица. Порадовали [без подвоха]. Забавно, guest_20040621, а вы вообще для всех аттрибутов ведете историю значений? И эта история - не аттрибут объекта, а сама по себе независимая сущность? И она ведется не для каждого аттрибута (моментального) независимо, а для всех сразу одним махом?? ЗЫ и подвохи у вас какие-то вялые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 22:15 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Вдогонку предлагаю усугубить ситуацию. Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть). Сведения об их значениях вы получаете из нескольких источников (не ждали?). Данные разных источников 1) в разной степени недостоверны => 2) могут противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не менее реальными, предположениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 23:17 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Забавно, guest_20040621, а вы вообще для всех аттрибутов ведете историю > значений? Member Юличка01, о каких атрибутах речь? > И эта история - не аттрибут объекта, а сама по себе независимая сущность? История изменений в контексте Вашего вопроса - это лог состояний. Т. е. нет, это не атрибут объекта. > И она ведется не для каждого аттрибута (моментального) независимо, а для всех > сразу одним махом?? Странные у Вас вопросы, member Юличка01. Т. е. обсуждение - как бы само по себе, а Ваши вопросы - сами по себе? Вроде как начиналось все с суррогатных ключей, атомарности атрибутов и зависимости модели от предметной области. При чем здесь история изменений и способ ее регистрации? ;) Для относительно редко изменяющихся атрибутов - общий журнал, для относительно часто изменяющихся - индивидуальный. > ЗЫ и подвохи у вас какие-то вялые... Видите ли, в чем дело: для сайта, посетители которого всерьез обсуждают, хранить фамилию, имя и отчество в разных полях одной таблицы или все-таки в одном, сообщение member'a ModelR [1513937] - просто революция. Подход, описанный member'ом ModelR, imho ошибочен в данной ситуации. А вот сам факт наличия такого мнения исключительно порадовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 00:17 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не > имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть). > Сведения об их значениях вы получаете из нескольких источников (не ждали?). > Данные разных источников 1) в разной степени недостоверны => 2) могут > противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не > менее реальными, предположениями? Да, если все используемые источники - реляционные (или псевдореляционные с некоторыми ограничениями) и для каждого из них известна структура данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 00:24 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Юличка01Вдогонку предлагаю усугубить ситуацию. Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть). Сведения об их значениях вы получаете из нескольких источников (не ждали?). Данные разных источников 1) в разной степени недостоверны => 2) могут противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не менее реальными, предположениями? Именно так должны быть спроектированы базы данных новостных агенств или скажем разведслужб :) - много противоречивых сообщений на одну тему из разных источников. Если говорить о ключах, то в логической модели ключ источника видимо является частью естественного ключа сообщения. Судя по новостным сайтам - справляются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 09:59 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621 > Member Юличка01, о каких атрибутах речь? О тех самых, иных, кроме суррогатного ИД. > История изменений в контексте Вашего вопроса - это лог состояний. Т. е. нет, это не атрибут объекта. Это, видимо, в контексте вашего миропонимания - лог состояний. Сферический, независимый, неограниченный набор имен собственных. В контексте вопроса - набор исторических атрибутов. Чем у вас человек от парохода отличается? У обоих один атрибут, он же идентификатор. [лог состояний... хе-хе...] > Странные у Вас вопросы, member Юличка01. Т. е. обсуждение - как бы само по себе, а Ваши вопросы - сами по себе? Вроде как начиналось все с суррогатных ключей, атомарности атрибутов и зависимости модели от предметной области. При чем здесь история изменений и способ ее регистрации? ;) Да не нравишься ты мне > Для относительно редко изменяющихся атрибутов - общий журнал, для относительно часто изменяющихся - индивидуальный. Каких-таких атрибутов? У вас "лог состояний". Т. е. нет, это не атрибут объекта (c). Человек не имеет иных атрибутов кроме суррогатного ИД (c). Общий журнал - денормализация. Бэд. > Видите ли, в чем дело: для сайта, посетители которого всерьез обсуждают, хранить фамилию, имя и отчество в разных полях одной таблицы или все-таки в одном, сообщение member'a ModelR [1513937] - просто революция. "Имя", "Фамилия", "Отчество" - элементы справочника "Части имени" + справочники имен, фамилий, отчеств. Нормализация. Гуд. Будьте последовательны > Подход, описанный member'ом ModelR, imho ошибочен в данной ситуации. А вот сам факт наличия такого мнения исключительно порадовал. типа нормальный подход, только ситуацию не поняла :) > Да, если все используемые источники - реляционные (или псевдореляционные с некоторыми ограничениями) и для каждого из них известна структура данных. ? Источники независимые. Люди, организации, базы данных, на основании сведений которых ваш оператор клавиатуры вносит информацию в БД. Вот приходит к вам мэн - кто такой? - Михаил Ходорковский - а в водительских правах? - Вася Пупкин. Нет, это я вчера был Пупкин... - а по отпечатку вашей левой ноги - Золупкин... - да не может быть! не виноватая я! - [смачно затягиваясь чупачупсом] Так и запишем: Элвис Пресли. Следующий! ModelR > Именно так должны быть спроектированы базы данных новостных агенств или скажем разведслужб А у вас, следовательно, все данные вводятся на основании одного типа документа, которому вы полностью доверяете. Это что, паспорт? Вам его руки дали подержать? Если нет, будет чем заняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 12:13 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
>А у вас, следовательно, все данные вводятся на основании одного типа документа, которому вы полностью доверяете. Это что, паспорт? Вам его руки дали подержать? Если нет, будет чем заняться. Везде конечно по-разному, если прием на постоянную работу - без паспорта никак. А коли вопрос по достоверности данных, то он заслуживает отдельного топика - плз развернутый вопрос и поехали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 13:29 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
2 Frankie Относительно "магических кодов" aka "интеллектуальных ключей" aka ... были комментарии Тома Кайта в одной рассылке по Ораклу, там же обсуждался вопрос выбора первичных ключей. ссылка здесь тебе с абзаца Составной ключ в одном столбце . Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 13:55 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Это, видимо, в контексте вашего миропонимания - лог состояний. Нет, это в контексте проектирования баз данных лог состояний. Если Вы этого не понимаете - больше читайте. > Да не нравишься ты мне Хм... по логике жанра мне следует поинтересоваться, когда именно мы пили брудершафт, но - не буду. Хамство не поможет Вам в Вашей профессиональной подготовке. ;) > Каких-таких атрибутов? У вас "лог состояний". ;) Вам даже Дейта читать рано. > типа нормальный подход, только ситуацию не поняла :) Этот типа нормальный подход не катит для описания физических лиц. Так понятнее? > Источники независимые. Абсолютно фиолетово, зависимые они или нет. Существенно, что они ранжированы (т. е. степень достоверности задана). > Люди, организации, базы данных, на основании сведений которых ваш оператор > клавиатуры вносит информацию в БД. Это наиболее простая задача из возможных. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 13:57 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Именно так должны быть спроектированы базы данных новостных агенств Уважаемый дон хорошо представляет себе технологию работы новостного агентства? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 14:01 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Именно так должны быть спроектированы базы данных новостных агенств Уважаемый дон хорошо представляет себе технологию работы новостного агентства? К сожалению, не лучше чем разведслужб. Просто пример потока противоречий, который у всех перед глазами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 15:40 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
>Нет, это в контексте проектирования баз данных лог состояний. Если Вы этого не понимаете - больше читайте. Нет, это не лог и не состояний Я же вам же написала что это такое. > Этот типа нормальный подход не катит для описания физических лиц. Так понятнее? У вас что-то не получается? > Абсолютно фиолетово, зависимые они или нет. Чего?? Если один документ является основанием для другого, вам фиолетово? > Существенно, что они ранжированы (т. е. степень достоверности задана). Вот и задайте на досуге. Не забудьте про "лог состояний" своей степени достоверности. > Это наиболее простая задача из возможных. ;) Нет ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 11:02 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
Юличка01В зеркало играем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 12:18 |
|
||
|
Споры о первичном ключе
|
|||
|---|---|---|---|
|
#18+
> Нет, это не лог и не состояний Я же вам же написала что это такое. Хех, да мало ли кто чего написал. На sql.ru я и бОльшую чушь читал. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 12:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545898]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
126ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
133ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 515ms |

| 0 / 0 |
