powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Споры о первичном ключе
165 сообщений из 165, показаны все 7 страниц
Споры о первичном ключе
    #33022555
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнее время обострился спор с начальником насчёт следующего вопроса.

Он считает, что первичным ключом таблицы (естественно речь идёт только о суррогатном ключе) должно быть поле, в идеале integer, auto_increment, не использующееся иначе как для связей таблиц.

Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации. Так я делал БД по хранению результатов автогонок. Первичный ключ был столбцом, содержащим год, номер этапа, строку результата. Например 19780603 говорил о третьем результате на шестом этапе сезона 1978 года. Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место.

Более общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не только отрицательно отражается на производительности но и содержит опасность потенциальной ошибки. Возможно дело в том, что он работает с известным своей убогостью MySQL, а я "вырос" на MSSQLServer2000. Я привык использовать язык SQL широко: вводить переменные, строить условия, возможно циклы. Не представляю себе жизнь без представлений и хранимых процедур. Мне интересно ваше мнение по этой проблеме.

Если этот вопрос уже где-то обсуждался, дайте ссылочку.
С Уважением.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022589
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieВ последнее время обострился спор с начальником насчёт следующего вопроса.
Это весеннее обострение. Пройдет. До осени.

FrankieБолее общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не только отрицательно отражается на производительности но и содержит опасность потенциальной ошибки.
Я тут скорее на стороне начальника. Не то что бы совсем нельзя, но только в том случае, когда без него никак.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022649
Never
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твой начальник прав.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022650
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю не использовать в таблицах столбцов больше одного строкового типа и в нем хранить сразу же всю информацию.Пример таблицы:
create table SqlRuTopic
(
Topic varchar2(4000);
)
Само собой Topic- первичный ключ.
Значения:
Все форумы/Проектирование БДShtockRe:Споры о первичном ключе<далее текст сообщения>

Места сэкономили, блин, и работу облегчили. А производительность - на высоте.......
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022658
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieОн считает, что первичным ключом таблицы (естественно речь идёт только о суррогатном ключе)

Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации.
Для начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации. Берете любую ссылку "естественные и суррогатные ключи" и находите полный спектр мнений по этому поводу. Лично мое:

- Во-первых, бездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль. Тем более что вычисляемые поля MSSQL, вроде бы позволяющие цивильно работать с такими данными, на самом деле этого не позволяют (они позволяют только получать цивильные данные, но не записывать их обратно). Если идти этим путем - надо делать updateable view. Но для начала надо иметь хороший ответ на вопрос - зачем этот геморрой.

- Во-вторых, естественные ключи оправданы только в отдельных случаях при соблюдении достаточно жестких требований. У Вас наблюдается несколько легкомысленный подход.

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

P.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022671
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerP.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился.

Дык! Небось это Фрэнки (нштейн) и есть! ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022700
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockПредлагаю не использовать в таблицах столбцов больше одного строкового типа и в нем хранить сразу же всю информацию........
Он тоже вчера это мне говорил. Я же не анархист. Просто считаю возможность использовать технологии шире, чем это предполагается.

softwarerДля начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации
И то и другое. Он, безусловно, остаётся целочисленным, однако строится по некоторым правилам, позволяющим хранить ещё какую-то информацию.

softwarerбездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль
С точки зрения сервера никакого нарушения нет. Я же не предлагаю делать как говорил Shtock.

softwarerНо для начала надо иметь хороший ответ на вопрос - зачем этот геморрой.
Говоря о примере с результатами гонок - ответ очевиден! Если использовать обыкновенный ключ, придётся добавить ещё два столбца, причём столбец 'year' будет иметь всего-то около 50 различных значений на 15000 записей. А столбец 'round' (1978 06 03) вообще меньше 20! В процессе разработки приложения по генерации статистики на основе такой таблицы я был очень доволен тем, что нужно гнать только один столбец, к тому же элементарно расщепляемый, вместо трёх.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022707
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витал softwarerP.S. Самое интересное, что только вчера объяснял это же довольно опытному MSSQL-щику. Может, конечно, он решил со мной не спорить, но почти сразу согласился.

Дык! Небось это Фрэнки (нштейн) и есть! ;)

Я не "опытный MSSQL-щик" а всего лишь самоучка. У меня нечаяно оказалась отличная книга... так всё и началось.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022730
9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
9
Гость
автор
Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место.


Можно узнать сколько места ты сэкономил? Сколько стоит это сэкономленное место?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022741
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9Можно узнать сколько места ты сэкономил? Сколько стоит это сэкономленное место?
Сколько в байтах сказать не могу - надо пробовать на конкретных mdf-фалйах. Вот прям на 100% сказать что занимает больше: 2 стобца int(2) или 1 int(4) не могу, но думаю, что первое. Тем более с кучей записей. А насчёт стоимости - да так намного легче работать с данными. Поэтому оно не "стоит", а "даёт".
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022778
9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
9
Гость
я к тому, что сейчас 80 Гиг стоит примерно 80$. т.е 1Гиг стоит 1 доллар!

Сегодня разговоры о экономии места потеряли свою прежнюю актуальность.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022787
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы используете не технологию "шире", а ищете себе геморой. Подумайте о редактировании и о том, как будете парсить Ваш ключ для составления отчетности.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022807
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieОн тоже вчера это мне говорил. Я же не анархист. Просто считаю возможность использовать технологии шире, чем это предполагается.
:) Как Вам сказать... "использовать технологию шире, чем предполагается" можно в двух случаях: либо благодаря врожденной гениальности, либо благодаря недостатку знаний. Обычно с ростом знаний понимаешь, как мало знал про возможности использования технологии.

Frankie softwarerДля начала стоит таки решить - ключ суррогатный или хранение еще какой-то информации
И то и другое. Он, безусловно, остаётся целочисленным, однако строится по некоторым правилам, позволяющим хранить ещё какую-то информацию.
Это, простите, в музей юмора. Сходите в гугль и почитайте, что такое суррогатный ключ.

Frankie softwarerбездумное нарушение первой нормальной формы (которое Вы предлагаете) - не лучшая мысль
С точки зрения сервера никакого нарушения нет. Я же не предлагаю делать как говорил Shtock.
Это, простите, также в музей юмора. Во-первых, точка зрения сервера не имеет ни малейшего отношения к 1НФ. А во-вторых, Вы именно это и предлагаете - Shtock только проиллюстрировал подход более ярким примером.

Frankie softwarerНо для начала надо иметь хороший ответ на вопрос - зачем этот геморрой.
Говоря о примере с результатами гонок - ответ очевиден!
Одна из моих любимых цитат, принадлежит моему другу: "Если попробовать доказать очевидный факт - он часто оказывается вовсе не очевидным. А иногда - вовсе не фактом".

Frankie Если использовать обыкновенный ключ, придётся добавить ещё два столбца,
Это, безусловно, страшно. Теоретикам нормализации, построенной на добавлении столбцов, уготовано место в геенне огненной, не иначе :)

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

Frankie причём столбец 'year' будет иметь всего-то около 50 различных значений на 15000 записей.
И чем это страшно? Неселективностью индекса по этому полю? В первую очередь стоит отметить, что про селективность на 15.000 записей вообще вряд ли стоит говорить; во-вторых - те же самые числа, упакованные а-ля селедка в бочке, безусловно, станут куда селективнее.

Frankie В процессе разработки приложения по генерации статистики на основе такой таблицы я был очень доволен тем, что нужно гнать только один столбец, к тому же элементарно расщепляемый, вместо трёх.
Вы, безусловно, имеете право быть довольны самыми экзотическими вещами. Лично я, например, был бы доволен возможностью написать

Код: plaintext
1.
select year, round from table

вместо

Код: plaintext
1.
2.
3.
4.
5.
select 
  cast (substr (somehorrorvalue,  15 ,  4 ) as integer) year,
  cast (substr (somehorrorvalue,  22 ,  2 ) as integer) round
from
  table

Более того, я совершенно уверен, что когда Вы перейдете от 15.000 записей к 15.000.000 - сервер также будет крайне доволен возможностью сосредоточиться на эффективности (например, использовании bitmap index), а не на идиотских операциях выковыривания данных, ранее вковырнутых в категорически не приспособленную для использования структуру.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022814
prof79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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-ов).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33022873
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
SQL> create table num4 (f1 number( 4 )) storage (initial 8K next 8K);

Table created.

SQL> create table num2x2 (f1 number( 2 ), f2 number( 2 )) storage (initial 8K next 8K);

Table created.

SQL> insert into num4 select  9999  from dba_objects where rownum<= 50000 ;

 50000  rows created.

SQL> insert into num2x2 select  99 ,  99  from dba_objects where rownum<= 50000 ;

 50000  rows created.

SQL> column segment_name format a15
SQL> select segment_name, bytes from dba_segments where segment_name in ('NUM4', 'NUM2X2');

SEGMENT_NAME         BYTES                                                      
--------------- ----------                                                      
NUM4                 720896                                                       
NUM2X2               720896                                                       
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023057
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голосуем!
№1 Начальник всегда прав...
№2 Если он не прав, см. п.№1.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023062
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, О размере - Спасибо, буду знать...

Скажу ещё кое-что. Раз для всех вас мой спобос - грубая, явная ошибка, то остаётся ещё раз удивится недалёкости наших преподавателей. Ведь эта система является, ни много ни мало, моим бакалаврским дипломом, на отлично защищённым ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023071
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BolГолосуем!
№1 Начальник всегда прав...
№2 Если он не прав, см. п.№1.
У меня нормальный начальник. С ним можно и нужно вести здоровые дискуссии.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023106
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш начальник прав
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023162
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример отчетности: да самое простое - Выбрать какие были результаты у команды А в 1997 году. Будете туеву хучу преобразований делать со всеми вытекающими.
По поводу преподавателей и бакалавриата - imho российкие бакалавры - очередная пофанация в целях закоса под запад.У нас еще была возможность выбрать между инженером и бакалавром. Я выбрал инженера, а бакалавры дурью под названием научная работа маялись еще полгода, но знаний больше не получили.Теперь говорят, что инженеров переименуют в прикладных бакалавров.
P.S. softwarer уже показал пример запроса.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023221
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockПример отчетности: да самое простое - Выбрать какие были результаты у команды А в 1997 году.
Эх, не хотел углубляться в предметную область.... видимо придётся. Понимаете ли, что такое "результаты?" В гонках, как пожалуй ни в каком другом виде спорта, можно строить отчёты по таким мудрёным показателям, что даже в голове не укладывается. Так что без разъяснения "результатов" ничего, ровным счётом, сказать нельзя.

ShtockПо поводу преподавателей и бакалавриата....У нас еще была возможность выбрать между инженером и бакалавром.
Не, мы выбирали между инженером и магистром, а бакалавриат - это первые 4 года обучения. Все вместе. А дальше уже либо инженер - полгода учиться + полгода диплом писать (что вообще смешно с нашим уровнем дипломов, подавляющее большинство которых какие-то жалкие системы документооборота в Access, где даже VBA мининум), либо магистр - 2 года обучения (правда только 2-3 дня в институт ходишь), параллельно пишешь диссертацию. Ну я вот пошёл в магистратуру. Хотя основное время уделяю работе.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023233
CruelGenius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не ошибаюсь , многие SQL серверы очень рады когда им подсовывают ID integer not null primary key и сразу автоматически строют по нему индекс. Так что в первую очередь надо спросить у сервера, и соответствие 1нф, а потом уже спорить с начальником. А вдруг он в натуре прав?
Глядишь премию выпишет....
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023425
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieЯ долго размышлял над вопросом: вот есть гонщик - "имя фамилия". Но ведь можно расщепить на имя+фамилия? Что это даст?Вопросо, безусловно, интересный, но подошли вы к ответу неверно. Атомарнось атрибутов - понятие не абсолютное, а относительное. То есть для одной системы ФИО атомарен, для другой нет. Для одной системы понятие "адрес" атомарно, для другой нет. Критерий состоит в том, какие операции предполагается выполнять над данными. Если система заведомо выполняет над атрибутом только операции типа сравнения (= <> < > <= >=), он может быть атомарным. Если хотя бы в потенциале возможны операции над частью атрибута, он не атомарен.

В вашем случае критерий срабатывает четко. Вы заведомо будуте выполнять операции над частью значения атрибута. Значит, вы неверно спроектировали БД. У вас нарушение 1НФ.

Вообще, если в запросах часто встречается LIKE, причем это предопределенные запросы , почти 100% - БД спроектирована неверно.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023431
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем по НФ!!!
Вникаем...
Читем почему НФ лучше не НФ (для РСУБД конечно).
Вникаем...
Оцениваем аргументы свои и начальства с новых позиций.

ЗЫ 2 Frankie
Frankie
Я не "опытный MSSQL-щик" а всего лишь самоучка. У меня нечаяно оказалась отличная книга... так всё и началось.Главное теперь найти другую ОТЛИЧНУЮ КНИГУ и продолжать изучать ТЕОРИЮ и практику.

ЗЗЫ все ИМХО.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023463
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mir Если хотя бы в потенциале возможны операции над частью атрибута, он не атомарен.
Даже если всего 1-2 раза? Вы утверждаете, что необходимо расщеплять, если есть вероятность использования части значения столбца?

mirВообще, если в запросах часто встречается LIKE, причем это предопределенные запросы , почти 100% - БД спроектирована неверно.
Что такое предопределенные запросы? Те, которые очевидны на этапе проектирования? И почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023535
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Атомарнось атрибутов - понятие не абсолютное, а относительное.

Поделитесь источником этого умозаключения, pls.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023589
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieЧто такое предопределенные запросы? Те, которые очевидны на этапе проектирования? В общем, да.
FrankieИ почему LIKE это неверно?
Потому, что LIKE почти всегда свидетельствует именно о нарушении 1NF. Бывают исключения, но это обычно ad hoc запросы.
FrankieНе согласен, LIKE - мощная штука, глупо её игнорировать.
Знаете, хорошие фундаментальные знания - еще более мощная штука. Но ведь "мы простых путей не ищем", да?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023595
prof79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Frankie
Что такое предопределенные запросы? Те, которые очевидны на этапе проектирования? И почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать.
1. предопределенные - это те запросы для которых БД разрабатывается :-)
2. LIKE - ужасно тормознутая и прожорливая штука. И поэтому ИМХО ее использовать надо лишь тогда когда ничего не помогает.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023640
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirЗнаете, хорошие фундаментальные знания - еще более мощная штука. Но ведь "мы простых путей не ищем", да?

Что-то типа того. Разбивать чуть что на столбцы - большого ума не надо. mir, Вы не ответили на очень важный вопрос с этим связанный. Повторю:
авторДаже если (часть значения столбца будет использоваться) всего 1-2 раза? Вы утверждаете, что необходимо расщеплять, если есть вероятность использования части значения столбца?


А пока что ваше
mirПотому, что LIKE почти всегда свидетельствует именно о нарушении 1NF. Бывают исключения, но это обычно ad hoc запросы.
выглядит крайне неубедительно. Могу объяснить почему. А что такое "ad hoc запросы" я не знаю. Может дело в них?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33023831
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А начальник не хочет поступиться принципами ввести в "поле, в идеале integer" хотя бы еще пару разрядов для хранения ID базы?
На тему "умных" (интеллектуальных) ключей что-то писал Джо Селко (Joe Celko). Например, пин-код жителя города из реестра
Главное - обеспечить неизменность ключа, чтобы избежать проблем с обновлениями.

guest_20040621> Атомарнось атрибутов - понятие не абсолютное, а относительное.
Поделитесь источником этого умозаключения, pls.
Атомарность определяется рамками моделируемой предметной области.
Если вы делаете CRM, то телефон контактной персоны атомарен.
Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые три цифры - номер АТС, далее номер шлейфа).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024063
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Атомарность определяется рамками моделируемой предметной области.

Я просил назвать источник этого умозаключения. Надеюсь, это не слишком обременяющая просьба?

> Если вы делаете CRM, то телефон контактной персоны атомарен.
> Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые
> три цифры - номер АТС, далее номер шлейфа).

Что общего между "телефоном контактной персоны" и "кабельным хозяйством телефонной сети", позвольте поинтересоваться?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024064
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SELECT ... FROM ... WHERE first_name LIKE 'Smi%'
и не очень:
Код: plaintext
SELECT ... FROM ... WHERE first_name LIKE '%Smi%'
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024084
prof79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажется автор темы имел в виду тот like оторый "не очень"
:-)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024087
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Атомарность определяется рамками моделируемой предметной области.
Я просил назвать источник этого умозаключения. Надеюсь, это не слишком обременяющая просьба?
Обременяющая :) Считайте, что из головы. Если есть возражения - вперед. Нет - в сторону :)

> Если вы делаете CRM, то телефон контактной персоны атомарен.
> Если делаете учет кабельного хозяйства телефонной сети, то неатомарен (первые
> три цифры - номер АТС, далее номер шлейфа).
Что общего между "телефоном контактной персоны" и "кабельным хозяйством телефонной сети", позвольте поинтересоваться?
Очевидно, атрибут "номер телефона". Атомарный в первом случае и неатомарный во втором.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024194
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Считайте, что из головы.

Понятно. Тогда это просто ошибочная точка зрения.

> Очевидно, атрибут "номер телефона".

Т. е. Вы полагаете, что "номер шлейфа + АТС" эквивалентно "телефонный номер"? А если это оператор мобильной связи? а если IP-телефон? IRIDIUM? ;) Получается, что атомарность идентификатора (телефонный номер - просто некоторый идентификатор) зависит от способа связи? ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024227
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prof79Кажется автор темы имел в виду тот like оторый "не очень"
:-)
Никакого конкретного LIKE я не имел ввиду. Transact-SQL предоставляет очень широкие возможности по его использованию. В моём примере речь идёт скорее о сравнении по какой-то части ключа вроде
Код: plaintext
LEFT(Race.code, 6 )=LEFT(Qual.qcode, 6 )
нежели о каком-то безумно навороченном применении LIKE.

2 Templar & guest_20040621. Вот как раз в случае с телефонами моё предложение как нельзя актуально. Я бы ни в коем случае не дробил телефонный номер! Городской, федеральный сотовый, прямой московский сотовый, междугородний... Я не понимаю, что сложно написать распознающую структуру что ли??? А споры, в общем, ведутся вокруг того расщеплять или нет. Что расщеплять? на сколько атомов? Даже если вы найдёте решение у вас получится набор столбцов, большинство из которых хранят пустые значения (или умолчания) практически во всех записях.

В боле общем понимании суть состоит в том, как оптимально разбить на атомы. Я надеюсь, что господин mir выскажется по этому поводу. Большинство из здесь пишущих, судя по всему, придерживается правила "не уверен - расщепляй" , видимо потому, что синтез в данном случае и проще и быстрее, чем анализ. Повторюсь, но мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024230
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Т. е. Вы полагаете, что "номер шлейфа + АТС" эквивалентно "телефонный номер"?
Я полагаю, что вы занимаетесь передергиваниями.
"номер шлейфа + АТС" это номер абонента городской телефонной сети. Можете проверить, набрав его на своем телефоне.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024239
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frankie
Никакого конкретного LIKE я не имел ввиду. Transact-SQL предоставляет очень широкие возможности по его использованию. В моём примере речь идёт скорее о сравнении по какой-то части ключа вроде
Код: plaintext
LEFT(Race.code, 6 )=LEFT(Qual.qcode, 6 )
Хороший способ похерить индексы. Как раз тот случай, когда "широкие возможности" отключают мыслительный процесс. Странно, попросили совета, Вам все вроде разжевали уже хренова туча народа, но Вы, как партизан, упрямо стоите на своем. Зачем тему-то поднимали ?

Frankieно мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи).Конечно нет, надо быть семи пядей во лбу, чтобы сделать так, как считаете Вы...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024241
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я полагаю, что вы занимаетесь передергиваниями.

Перечитайте Ваш [1480394]. Никаких передергиваний.

Вы делаете распространенную ошибку. Есть идентификаторы (суть естественные ключи; как и все естественные ключи, они вполне могут быть уникальны если а) уникальны их регистранты, б) правила формирования могут быть формализованы и описаны). Они не зависят (или мало зависят) от предметной области.

Когда Вы говорите о "кабельном хозяйстве телефонной сети", то на самом деле описываете технологию формирования такого идентификатора. Т. е. одним из результатов Вашего описания будет телефонный номер. ;)

Собственно номер - набор цифр - не зависит ни от предметной области, ни от степени детализации. ;)) Ы?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024244
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вот как раз в случае с телефонами моё предложение как нельзя актуально.

Абсолютно неактуально.

> Даже если вы найдёте решение у вас получится набор столбцов, большинство из
> которых хранят пустые значения (или умолчания) практически во всех записях.

У-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024246
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Вы о чем, собсно, рассуждаете, об иденитфикаторах?
А я об атомарности атрибутов, необязательно ключевых.
Ага.
Раз с телефонами так сложно получается, то возьмите пример попроще, с "ФИО". Где-то нужно хранить три атрибута, где-то - одну строку.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024254
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы о чем, собсно, рассуждаете, об иденитфикаторах?
> А я об атомарности атрибутов, необязательно ключевых.

Очень хороший, правильно заданный вопрос. ;) И я о них же. Среди атрибутов очень много таких, которые на самом деле идентификаторы. ;)) Которые, конечно, абсолютно необязательно ключевые. Опыт показывает, что такие атрибуты правильнее описывать совершенно определенным образом (версионность, история изменений). И опыт показывает, что атомарность таких атрибутов не зависит (или мало зависит) от предметной области. Т. е. никакой "относительностью" не пахнет. ;))

Собственно, это ровно противоположное Вашему тезису утверждение. ;)

> Раз с телефонами так сложно получается, то возьмите пример попроще, с "ФИО".

У-у-у... напрасно Вы так. Этот пример еще хуже. ;))

> Где-то нужно хранить три атрибута, где-то - одну строку.

Фамилия, имя, отчество - суть естественный идентификатор. ;)) Не буду повторять все, что говорил по этому поводу, сразу вывод, если позволите: нет задачи, для которой можно было бы хранить фамилию, имя, отчество одной строкой. Если Вы видите такую реализацию, можете быть уверены в том, что базу данных проектировал абсолютно далекий от проектирования человек. Дейта в глаза не видевший. ;)) Ну, или задача типа записной книжки для мобильного телефона. ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024261
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Фамилия, имя, отчество - суть естественный идентификатор. ;)) Не буду повторять все, что говорил по этому поводу, сразу вывод, если позволите: нет задачи, для которой можно было бы хранить фамилию, имя, отчество одной строкой. Если Вы видите такую реализацию, можете быть уверены в том, что базу данных проектировал абсолютно далекий от проектирования человек. Дейта в глаза не видевший. ;)) Ну, или задача типа записной книжки для мобильного телефона. ;))
Почтовая система в качестве примера подойдет? Не слишком простая?
Вот ведь незадача, не учитывает людей, учитывает адресаты. А потому ФИО всего лишь атомарный атрибут адресата, причем необязательный.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024269
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Почтовая система в качестве примера подойдет? Не слишком простая?

;) Я не телепат. Не сталкивался со структурой данных почтовых систем.

> Вот ведь незадача, не учитывает людей, учитывает адресаты. А потому ФИО всего
> лишь атомарный атрибут адресата, причем необязательный.

Хех, ну и при чем здесь ФИО? Если письмо будет адресовано "жирному ублюдку, который плохо пахнет", а адрес при этом будет правильным, такое письмо дойдет? ;)) Так о чем речь-то? В Вашем изложении речь идет именно об атрибуте адресата, _в общем случае не обязанным иметь ничего общего с фамилией, именем и отчеством_. ;)) Это Вы почему-то решили, что этот атрибут должен быть обязательно ФИО.

Я понимаю, что Вы хотели проиллюстрировать этим примером. ОК, давайте чуть расширим наше представление об идентификаторах, которые мы используем как атрибуты. В общем случае они могут иметь суффиксы, префиксы и псевдонимы (алиасы или как Вам удобнее). Ваш пример - хороший пример использования алиасов. ;)) Аналогичный пример с телефонным номером: можно записать его буквами, а не цифрами. Буквенное обозначение - тоже псевдоним. ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024270
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Телефон не годится, ФИО не нравится...
Третий и последний раз. Артикул товара по каталогу производителя.
У поставщика - неатомарный, составной на основе классификации. У покупателя-дистрибутора своя классификация, артикул поставщика атомарен, идет как внешняя ссылка.
Это атрибут одной и той же сущности - товарной позиции.
Свой артикул также может быть атомарен в схеме БД, несмотря на то, что различные его части (и цифровые и буквенные - ограничено полетом фантазии) имеют свой смысл.
На сем предлагаю переливания из пустого в порожнее завершить.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024361
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
MirАтомарность атрибутов - понятие не абсолютное, а относительное.
Поделитесь источником этого умозаключения, pls.
Поделюсь, поделюсь. Хотя вам вполне ясно ответили:
TemplarАтомарность определяется рамками моделируемой предметной области.
Вы дали просто потрясающий ответ:
guest_20040621Понятно. Тогда это просто ошибочная точка зрения. То есть мы вам обязаны что-то обосновывать, а вы нам нет. Типа точку поставили в споре. Такой Большой Папа, мнение которого правильно по определению. Между тем, вам бы с базовыми знаниями определиться. Например:
guest_20040621Среди атрибутов очень много таких, которые на самом деле идентификаторы. ;)) Которые, конечно, абсолютно необязательно ключевые. То есть вы противопоставляете потенциальные ключи (ключевые атрибуты) и атрибуты идентификаторы? Большего бреда я в жизни не видел. К вашему сведению, ключевые атрибуты и атрибуты-идентификаторы — это одно и то же. Если только вы не имели в виду что-то совсем иное (вроде «ключевые» относится только к первичному ключу, но не обязательно к потенциальному ключу). В противном случае хотелось бы выслушать развернутую аргументацию по обоснованию вашего «открытия».
Далее:
guest_20040621Опыт показывает, что такие атрибуты правильнее описывать совершенно определенным образом (версионность, история изменений). И опыт показывает, что атомарность таких атрибутов не зависит (или мало зависит) от предметной области. Т. е. никакой "относительностью" не пахнет. ;))
То есть у вас «опыт», и он что-то там «показывает». Это очень сильный аргумент в споре. Прям наповал. Конечно же, ни у кого больше никакого опыта по определению быть не может (Большой Папа, помним, помним). Однако здесь заметно вот что. И я, и Templar рассуждали об атрибутах вообще, т.е. об общем случае. Вне зависимости от их принадлежности к потенциальным ключам. Вы же рассуждаете только о частных случаях:
*такие* атрибуты, атомарность *таких* атрибутов, *мало* зависит. И что значит «мало» зависит? Если зависит, что ж вы спорите? Если не зависит, при чем здесь «мало»? Это как быть «слегка беременной».

Ну а теперь я все же объясню, почему атомарность атрибутов отношений БД относительна, а не абсолютна.
1. Реальному миру атомарность не присуща. Если бы вы изучали системологию, то знали бы, что одним из главных постулатов теории систем является утверждение о том, что каждый элемент системы в свою очередь является системой. И так до бесконечности. Древние придумали понятие атома, неделимого элемента материи, но его давно уже разложили на элементарные частицы, а те не субчастицы и т.д.

2. Таким образом, идеальная модель реального мира должна обладать бесконечным уровнем детальности.

3. Реальные модели всегда являются «огрублением» моделируемой системы. Они сознательно игнорируют те или иные аспекты оригинала, неважные для цели моделирования. И они всегда рассматривают оригинал на том или ином уровне детальности. Это еще один постулат системологии.

4. Важный аспект моделирования — его цель. Поскольку модель есть артефакт, искусственная конструкция, заведомо упрощающая оригинал в том или ином аспекте, должна быть предопределена цель такого упрощения. Любая модель всегда создается в условиях заведомо известных и заранее выбранных ограничениях, направленных на достижение заданной цели. Если цель будет иной, то и модель той же самой системы-оригинала будет создана иной. Возможно, кардинально иной.

5. База данных в конечном итоге является моделью реального мира. Еще точнее можно сказать, что моделью «части» реального мира, или «одной из моделей», но это неважно.

6. База данных создается как упрощение реального мира, как и любая модель.

7. Создание базы данных всегда преследует определенную цель, задающую соответствующие ограничения, в том числе уровень детальности моделирования.

8. Таким образом атомарность атрибутов БД полностью определяется выбранным уровнем детальности моделирования, который в свою очередь полностью определяется конкретной целью создания БД.

9. Таким образом, атомарность атрибутов БД есть понятие не абсолютное, а относительное.

Почитайте, к примеру, классическую книгу Флейшман Б.С. Основы системологии. — М.: Радио и связь, 1982. — 368 с.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33024371
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Телефон не годится, ФИО не нравится...

Да мне-то как раз нравится. Только Ваши примеры как-то не слишком иллюстрируют полезность Вашего подхода. Скорее наоборот. ;))

> Артикул товара по каталогу производителя.

У-у-у... все плохо. Снова бесполезный пример, абсолютно аналогичный уже рассмотренным. Аргументы закончились, я так понимаю? ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025002
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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новных теорем нашей с Вами науки. А Вы хотите, чтобы они заглянули, что Вы там у себя понаписали. Простите, помимо прочего, сколько из них видело Ваш диплом дальше обложки?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025035
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieИ почему LIKE это неверно? Не согласен, LIKE - мощная штука, глупо её игнорировать.
Как Вам сказать.. Атомная бомба - мощная штука, глупо ее игнорировать. Но для большинства прикладных задач - например, обшмонать рынок - я бы у нашей доблестной милиции и огнестрел бы отбирал. Слишком неудачные побочные эффекты.

Повторюсь: задача на 15.000 записей будет нормально работать даже на i386, как бы ее ни написать. Но, если я правильно понимаю, сейчас Вы от своего диплома переходите к реальной работе, где эта логика теряет свою силу.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025129
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> То есть мы вам обязаны что-то обосновывать, а вы нам нет.

Я свои аргументы привел. А вот с ответными аргументами - как-то глуховато. ;)

> То есть вы противопоставляете потенциальные ключи (ключевые атрибуты) и
> атрибуты идентификаторы?

Вы читаете или излагаете вместо меня? Если вместо, не буду мешать. Если читаете - читайте внимательнее.

> То есть у вас «опыт», и он что-то там «показывает». Это очень сильный
> аргумент в споре.

;)) Дружище, у меня нет времени описывать всю последовательность рассуждений. Это долго и нудно. Придется начинать со стандартов, метаданных, тезауруса и пр. Это не на пару абзацев и не на пятнадцать минут. Поэтому я предложил только выводы. По существу есть возражения?

> Вы же рассуждаете только о частных случаях:

;) Эти частные случаи вполне себе иллюстрируют безосновательность и Ваших утверждений, и утверждений г-на Templar.

> Еще точнее
> можно сказать, что моделью «части» реального мира, или «одной из моделей»,
> но это неважно.

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

> Таким образом, атомарность атрибутов БД есть понятие не абсолютное, а
> относительное.

;)) ОК, пара вопросов: берем простые распространенные атрибуты (телефонный номер; фамилию, имя, отчество человека; ip-адрес; номер ФИДО; e-mail (а лучше URI); название предприятия; идентификатор налогового учета (первое, что пришло в голову). Пожалуйста, продемонстрируйте, как будут меняться эти атрибуты (атомарность атрибутов) в зависимости от предметной области (пока не будем рассматривать специализированные структуры, где эти сущности выступали бы основным предметом описания). Опционально: как по-Вашему, для перечисленных атрибутов может существовать некая каноническая форма записи?

P.S. Вы отметили, надеюсь, что я тактично проигнорировал Ваши хамские замечания и ответил исключительно по существу.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025517
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Я свои аргументы привел.Вы, видимо, называете аргументами следующие утверждения: guest_20040621Тогда это просто ошибочная точка зрения guest_20040621Вы делаете распространенную ошибку. guest_20040621 {ваше предложение}Абсолютно неактуально. guest_20040621У-у-у... напрасно Вы так. Этот пример еще хуже. ;)) guest_20040621У-у-у... все плохо. Снова бесполезный пример.

Пусть каждый судит сам, но мне набор подобных заявлений доказательным как-то не показался. На вполне резонный и конкретный пример Templar про ФИО вы ответили:
guest_20040621Я не телепат. Не сталкивался со структурой данных почтовых систем. Что и требовалось доказать.

Остальные ваши аргументы я уже рассмотрел в предыдущем посте. И выглядят они не лучшим образом. Ссылки на «опыт» не пойдут. Лично вас здесь никто не знает, опыт ваш никому из присутствующих не известен, даже регистрироваться на форуме вы почему-то не стали. А верить на слово, что у некой «маски» с ником guest_20040621 уж такой опыт, что всем опытам опыт...
А насчет красивых фраз «придется начинать со стандартов, метаданных, тезауруса» сразу вспоминается «я знаю карате, дзюдо и еще много страшных слов».
Знаете, как-то... хм, нехорошо после этого заявлять оппонентам, что у них «аргументы закончились», что «с ответными аргументами - как-то глуховато». Закончились у меня или Templarа аргументы, или не закончились, — ваши-то еще и не начинались. К сожалению, ваше любимое «У-у-у...» веским аргументом не выглядит.
guest_20040621Пожалуйста, продемонстрируйте, как будут меняться эти атрибуты (атомарность атрибутов) в зависимости от предметной области.
Рассмотрим один пример. Дата/время.
В одних случаях может использоваться как атомарный атрибут, в других желательно разбиение на дату и время, а иногда даже разбиение даты на год, месяц, день. Критерием является наличие/отсутствие необходимости постоянно оперировать частями даты (постоянные выборки по годам, по месяцам и т.д.).
Очевидно, что необходимость постоянно выполнять над датой операцию DATEPART не позволяет использовать индексы и сильно снижает производительность запросов. А если такие запросы составляют львиную долю работы, значит, рассматривать атрибут «дата/время» как атомарный нельзя, лучше разбить его на несколько атрибутов. Разумеется, это требует специальных мер по обеспечению корректности ввода/обновления, но это уже технические детали.
Таким образом, взгляд на «атомарность» даты/времени сильно меняется от задач системы. Пример системы с «атомарностью» — поле «дата рождения» в системе кадрового учета. Типовые операции — атомарное занесение, атомарное чтение, сравнение. Операции над частями даты редки или отсутствуют, над частью «время» — отсутствуют. Это и есть пример «огрубления» в модели. В реальном мире человек рождается в определенный час, минуту. Это время фиксируется в роддоме. А вот для кадрового учета этот аспект неважен — так и долой время рождения. Модель от этого не становится неадекватной, так как цель такой системы полностью достижима.
Пример систем с «неатомарностью» — производственные системы (часто как надстройки над АСУ ТП). Я этим лично занимаюсь. Данные поступают от датчиком и от ручного ввода потоком. Их надо прореживать. Виды отчетности по периодичности самые разные: за каждые два часа (двухчасовки), день, месяц, год, весь период. Операции выборки с условиями над отдельными частями даты и времени не исключение, а скорее правило.
И т.д.
Может, хватит спорить, Ясно же, что вы неправы, признайте честно. Зачем упорствовать?

guest_20040621P.S. Вы отметили, надеюсь, что я тактично проигнорировал Ваши хамские замечания и ответил исключительно по существу.
Дорогой вы мой человек! Не считаете ли вы хамство вот эти слова:
Мистер ВежливостьУ-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите.
Раз вы первый перешли на такой тон, то и я позволил себе быть с вами... попроще. Впрочем, готов принести искренние извинения за некорректную фразу «Большего бреда я в жизни не видел». Переформулирую так:
Ваша мысль о том, что «есть атрибуты-идентификаторы, которые, конечно, абсолютно необязательно ключевые», мне кажется странной, нелогичной и требующей дополнительных разъяснений.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025789
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAХороший способ похерить индексы. Как раз тот случай, когда "широкие возможности" отключают мыслительный процесс. Странно, попросили совета, Вам все вроде разжевали уже хренова туча народа, но Вы, как партизан, упрямо стоите на своем. Зачем тему-то поднимали ?
Когда мне разжуют достаточно, я перестану постить по этой теме. Когда изменю свою точку зрения - сообщу. Не торопите собоытия. Если бы здешние отцы считали мой вопрос дурацким (или меня упёртым), они бы не тратили своё время на ответы в этой теме, позволяли бы себе замечания вроде тех, что использует guest_20040621. Для меня одно из приемуществ этого форума в том, что я могу поднять интересующий меня вопрос и через час уже появится несколько ответов от умнейших людей, без всяких понтов. По-моему, это очевидно. Или Вы предлагаете мне благодарить каждого за мудрый совет?

ChA Frankieно мне кажется что не надо быть 7 пядей во лбу, чтобы фигачить по такому принципу логическую модель БД (таблицы и связи).Конечно нет, надо быть семи пядей во лбу, чтобы сделать так, как считаете Вы...
Есть моё мнение, есть Ваше...

guest_20040621Абсолютно неактуально.
Есть моё мнение, есть Ваше... Хотя mir уже всё Вам сказал.

guest_20040621У-у-у... дружище, начните, наконец, _изучать_ проектирование баз данных. Купите книжку, что-ли? Или репетитора наймите.
Есть у меня книжка, и знаю я достаточно. Вы б лучше ответили, что собственно в моём посте вызвало у Вас такую реакцию.

2 mir. 100% Respect! Пост про относительность атомарности мне очень понравился :)

2 softwarer & all
Теперь главное, собственно что я получил из этой темы.

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

2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, и нет возможности сразу определить атрибуты, поскольку они могут изменяться. Я предложил в столбце (не в ключе таблицы!) хранить некую последовательность символов, обозначающие набор атрибутов и их значения. Имеются чёткие правила синтеза и анализа такой последовательности. Они тоже хранятся в таблице. Большой разницы, где проводить синтез/анализ последовательности: на сервере или у клиента я не вижу. В принципе, мне пока это вообще кажется безразличным. Но сама концепция... Ну или опус, а то может некоторые считают, что "концепция" это слишком круто для меня ;).

3. LIKE отрицательно сказывется на производительности. С этим нужно считаться, согласен, учитываю.

4. И вот ещё. А если в пределах одной БД какой-то атрибут может использоваться как атомарно, так и вместе с другими столбцами? Или это невозможно? Просто как быть если частота использования примерно равная....

Приятно удивлён популярностью темы СПАСИБО всем за помощь. Однако тема ещё даааалеко не исчерпана ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025876
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieС этим я даже и не спорю, просто тогда получается, что любая необходимость в операции с фрагментом записи в столбце указывает либо на бессмысленность такой операции, либо на ошибку проектирования. Это так или нет???
В общем - так. SQL создавался для манипулирования значениями в целом. Я готов в принципе допустить, что в каких-то случаях удастся обосновать целесообразность неатомарности, но это должно быть что-то весьма специфичное; сходу такое в голову не приходит.

Операции с фрагментами реально могут применяться для неструктурированной информации, хранящейся или обрабатываемой в БД - текстов, XML, блобов и так далее. Это и like, и contains, и прочее - собственно SQL-часть здесь сводится к поиску, к операциям типа "подобно". Другая ниша подобных операций - представление данных; например, мы можем выводить дату в формате MM.YYYY.

Frankie2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД,
Ох. Только не это :(

Frankie4. И вот ещё. А если в пределах одной БД какой-то атрибут может использоваться как атомарно, так и вместе с другими столбцами? Или это невозможно? Просто как быть если частота использования примерно равная....
Хм. Никто не мешает атому использоваться совместно с другими атомами :) Собственно, вполне могут быть даже устойчивые комбинации - те самые имя-фамилия.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025899
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ общем - так. SQL создавался для манипулирования значениями в целом.
Значит дробление, если оно нужно, можно реализовать у клиента?

softwarer
Frankie2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД,
Ох. Только не это :(
Почему? Это очередной вечный двигатель ? :)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025953
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieЕсть у меня книжка, и знаю я достаточно.
Э-э-эх, когда ж и я, наконец, смогу такое сказать - "знаю я достаточно"...
Не, наверное сдохну раньше....
Frankie
2. Отойдём от ключа таблицы. На самом деле мой спор с начальником крутится вокруг чуть более широкой проблемы. Допустим, что проектируется некая универсальная БД, и нет возможности сразу определить атрибуты, поскольку они могут изменяться. Я предложил в столбце (не в ключе таблицы!) хранить некую последовательность символов, обозначающие набор атрибутов и их значения. Имеются чёткие правила синтеза и анализа такой последовательности. Они тоже хранятся в таблице. Большой разницы, где проводить синтез/анализ последовательности: на сервере или у клиента я не вижу. В принципе, мне пока это вообще кажется безразличным. Но сама концепция... Ну или опус, а то может некоторые считают, что "концепция" это слишком круто для меня ;).

Тут что-то мутное и темное, не совсем я понял....
Если смысл в том, что набор атрибутов, описывающий некую сущность, не определен точно и может расширяться со временем, то что мешает просто добавлять таблицы, которые содержат дополнительные атрибуты? При этом FOREIGN KEY такой таблицы является одновременно и PRIMARY KEY для нее и родительской. А для целого описания - определить VIEW. Нечто похожее у Кодда - RM/T. Нормальная РСУБД в принципе должна позволить через запрос к системным таблицам автоматически выяснить, какие таблицы в такой VIEW нужно склеить.

Если же речь идет о том, что значения атрибутов валятся в одно поле - то это, извиняюсь, и есть та самая неатомарная херня, и это очень плохо.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33025965
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieЗначит дробление, если оно нужно, можно реализовать у клиента?
Неудачно ставите акценты.

1. Дробление желательно вообще не реализовывать - не создавать потребности в нем. Помимо прочего, "сборка" как операция куда удобнее дробления.

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

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

Frankie softwarerОх. Только не это :(
Почему? Это очередной вечный двигатель ? :)[/quot]
Примерно. Чуть оптимистичнее - но тем не менее, Вы охарактеризовали точно и емко.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026014
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

Интересно... вот у меня пример относительности детализации решения

Например у нас есть файл с кодом класса на java и мы пишем компилятор.

И у нас есть тот же файл с классом, но мы пишем CVS...

Вот мне и интересно, будем ли мы во втором случае разбивать файл на слова или нет?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026043
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ХМ. Изменять структуру БД нельзя. Если это делать, то любая база универсальна. Другой вопрос, что делать надо аккуратно и продуманно...

softwarerДробление желательно вообще не реализовывать - не создавать потребности в нем. Помимо прочего, "сборка" как операция куда удобнее дробления.
Что ж, понятно :)

softwarer
Frankie softwarerОх. Только не это :(
Почему? Это очередной вечный двигатель ? :)
Примерно. Чуть оптимистичнее - но тем не менее, Вы охарактеризовали точно и емко.[/quot]
Однако я не сказал своего отношения к вечному двигателю. Понимате, наверное это уже особенности меня как личности, но я не считаю вечный двигатель нереальной задачей. Конечно это не значит, что нужно пытаться сделать его во что бы то ни стало и пробовать всё что взбредёт в голову! А уж любая вещь, относящаяся к IT возможна почти наверняка и нынешние темпы развития технологий это подтверждают. Возможна и потому, что тут мы не имеем дела с "законами природы" - всё касающееся ПО дело рук человечества. Другое дело, что универсальная БД верятно не возможна в рамках реляционной модели. Может это слишком громко сказано, но я стараюсь не ограничивать себя рамками теории...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026078
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieОднако я не сказал своего отношения к вечному двигателю. Понимате, наверное это уже особенности меня как личности, но я не считаю вечный двигатель нереальной задачей.
Если Вы обратите внимание, я тоже не высказал своего отношения. И я тоже не считаю его - в ИТ-смысле - нереальной задачей. Но у меня есть вполне определенное отношение к кавалерийским наскокам как методу его реализации.

FrankieМожет это слишком громко сказано, но я стараюсь не ограничивать себя рамками теории...
Это не громко сказано, это неумно сказано.

Есть совершенно чеканная формулировка правильного подхода: "Я знаю законы, которые я нарушил". Вы - пока что - не знаете. И, судя по суррогатному ключу, это может и не измениться. Если изменится - обнаружите, что рамки теории намного обширнее, чем Вам сейчас кажется. Потом - посмотрим.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026096
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вот мне и интересно, будем ли мы во втором случае разбивать файл на слова или нет?

Можно, я не буду отвечать на этот вопрос? ;)

ТАвАриСТЧ mir,

> Рассмотрим один пример. Дата/время.

Я, кажется, не просил рассматривать дату/время? Вопрос был более, чем конкретен. Отвечаем не на поставленный вопрос, а на что получилось? Это плохой способ обсуждения. Непродуктивный.

По существу: дружище, продолжайте лично заниматься АСУ ТП. К счастью, это слабо связано с проектированием баз данных. ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026109
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frankie2 ХМ. Изменять структуру БД нельзя. Если это делать, то любая база универсальна. Другой вопрос, что делать надо аккуратно и продуманно...
Изменять структуру БД можно, но по чуть-чуть и очень осторожно, и не так чтобы очень часто или даже совсем постоянно.
Изменения в структуре БД происходят по мере разработки и развития проекта в связи с появлением новых требований и уточнением либо огрублением модели. Да, бывает, что некоторые изменения требуют солидных переработок приложения.
Но, извините, приложение, для которого характерны постоянные изменения и непредсказеумость структуры хранимых данных в БД, - это дичайший абсурд. (сугубо личное мнение)

FrankieДругое дело, что универсальная БД верятно не возможна в рамках реляционной модели.
И совсем другое дело, что C.J.Date, например, считает, что универсальные БД не нужны, а нужно только правильно и полно реализовать реляционную модель.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026176
Oleg Perekhrest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данный спор действительно давний,
можно почитать например:
А. Усов "Ключ или отмычка". 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 системы (хранилища). так там не приветствуются в качестве первичных ключей сурогатные ключи, так как важна скорость обработки информации, а этого можно достичь если в полях содержится действительно информация, а не автоинкремент.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026182
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

угу, отлично. Я этого и ожидал :)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026265
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg PerekhrestЕсли бы "сурогатный" ключ, был догмой, то давно бы все СУБД держали такое поле, по умолчанию в каждой таблице.
Ошибка в логике. Суррогатный ключ может быть догмой для большого класса таблиц, но, например, для простых развязок многие-ко-многим ключ как элемент реляционной модели вообще не требуется (имхо не стоит плясать вокруг этого утверждения - да, в соответствии с теорией ключом в ней будут все поля, да, еще что-нибудь, но именно ключ - то есть метод адресации конкретной записи в ней - не нужен по смыслу операций с такой таблицей. Ключ если и делают, то для соблюдения уникальности).

При этом я вполне согласен с тем, что решение надо принимать по месту.

Oleg PerekhrestА если рассматривать не OLTP, а DSS системы (хранилища). так там не приветствуются в качестве первичных ключей сурогатные ключи, так как важна скорость обработки информации, а этого можно достичь если в полях содержится действительно информация, а не автоинкремент.
Это утверждение, назовем так, очень спорно. В ряде случаев на DSS-таблицы не идет ссылок - и тогда суррогатный ключ там будет бессмысленной тратой места; вместо него используется составной естественный, и используется опять-таки как unique constraint, не более. Более того, в DSS относительно часто вообще отключают ключи для экономии ресурсов. В то же время когда идет ссылка на запись, ссылка по составному естественному ключу.. не так часто является хорошим решением, даже учитывая преимущества имеющейся при этом денормализации.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026454
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> угу, отлично. Я этого и ожидал :)

Дружище, на глупый вопрос можно получить только глупый ответ. Или никакого. Ы?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026570
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Бурная дискуссия :)
Вам знакомо определение системы? Там, помнится, что-то про объекты говорится.
До относительности атомарности атрибута сами мыслю доведете? :)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026621
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что будет, если вторичный ключ есть, а первичного нету?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026665
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programmer_OrtodoxА что будет, если вторичный ключ есть, а первичного нету?Вы о чем? Сформулируйте вопрос яснее, а то непонятно. Кстати, что такое "вторичный ключ"? Такого зверя я нигде не встречал. Полагаю, имеете в виду альтернативный ключ?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026807
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вам знакомо определение системы?

В чьей интерпретации, позвольте осведомиться?

> Там, помнится, что-то про объекты говорится.

Упс. Какие-такие объекты? Вроде до сих пор в треде речь шла о реляционных структурах? Я что-то пропустил?

> До относительности атомарности атрибута сами мыслю доведете? :)

Вы опять? ;) Т. е. я должен все написанное еще раз процитировать? ;) Не работает Ваше утверждение в общем случае. Примеры imho было достаточно, чтобы в этом убедиться. Какие еще аргументы нужны? ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33026880
Mainframe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна из ошибок Флагмана от Инфософт - наличие такого первичного ключа - кода подразделения, в котором отражается его подчиненность. Выбирать приходится по LIKE. Сколько это проблем породило ..
в основном при сопровождении и в местах стыковки с другими системами, к Флагману не имеющими отнощения. Одно и тоже подарзеделение не дай бог менят подчиненность (у нас это происходит 2-5 раз в месяц в среднем, а в урожайные месяцы и по 100) и все .. в других системах нужно выполнять акткуализацию. Иногда механизма проследить, что это реально тоже самое подразделение, нет. Приходится в ручнную ..Вообщем поубивал бы таких проектировщиков.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027006
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
не тебе судить
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027164
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не тебе судить

Вопрос кому задан? Мне он показался исключительно тупым. ;) Извините, если Вас это обидело.

P.S. Странно, что никто не обратил внимание на пример с атомарностью времени. Т. е. все согласны с тем, что время может быть, а может не быть атомарным?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027171
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MainFrameВообщем поубивал бы таких проектировщиков.
Там, где есть необходимости осуществлять частые изменения такой ключ безусловно неприемлим! Я говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил. Пример с ключом в заглавном посте темы это лишь тривиальный случай.

Если говорить шире - я считаю, что нет ничего предосудительного в том, чтобы использовать такой мощный инструмент как сервер баз данных так, как я считаю нужным. Тем более, что серверу оказывется всё равно, что там за нормальная форма. Понимаете, я скорее предпочту написать лишний обработчик или запрос, чем ломать голову над атомарностью.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027234
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieЯ говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил.
Пример с ключом в заглавном посте темы это лишь тривиальный случай.

А правила эти определяются где - на клиенте?
FrankieЕсли говорить шире - я считаю, что нет ничего предосудительного в том, чтобы использовать такой мощный инструмент как сервер баз данных так, как я считаю нужным.
... и большой королевской печатью колоть орехи...
FrankieТем более, что серверу оказывется всё равно, что там за нормальная форма. Понимаете, я скорее предпочту написать лишний обработчик или запрос, чем ломать голову над атомарностью.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027250
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ограничения целостности не нужны ?
и связывать таблицы по фрагментам этих полей типа ТИП_ХРАНЯЩИЙ_ВСЕ_ЧТО_УГОДНО ?
где-то мне здесь чудится отсутствие фундаментального понимания теории....
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027254
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frankie
Хм. До тех пор, пока Вы сами и один пишете программу, сами и один эксплуатируете и сами и один пользуетесь результатами - нет абсолютно ничего предосудительного в абсолютно любом использовании такого мощного инструмента, как сервер БД. Когда одно из этих условий не выполняется - .. накоплена определенная статистика, что делать и чего не делать, дабы у коллег, пользователей и наследников не возникало желания тебя убить.

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

Если "я полагаю" для Вас достаточное обоснование - значит, давайте. Но обратите внимание: если не ошибаюсь, не нашлось ни одного человека, который поддержал бы Ваш подход (а соответственно - был бы рад работать с Вами или после Вас).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027277
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieТам, где есть необходимости осуществлять частые изменения такой ключ безусловно неприемлим! Я говорю о возможности хранить в стобце некую последовательность, смысл который изначально не известен (сколько там атрибутов, что она значит и т. п.), и определяется исходя из правил. Пример с ключом в заглавном посте темы это лишь тривиальный случай.

ИМХО , ничего страшного в этом нет. Если работает - пусть работает. Просто иногда проблемы возникают со временем, при развитии системы. Т.е. то что работает сейчас, необязательно будет работать в будущем. Поэтому люди, исходя из опыта, думают (стараются по крайней мере) немного вперед и стараются обезопасить себя заранее. Т.е. для неразвивающейся системы (ничего ругательного, например телефонный справочник) допустимы всякие допущения.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027280
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

Может хоть раз постараетесь объяснить?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027318
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 funikovyuri
Лучше не надо просить. Только "У-у-у" наслушаетесь. Да еще и узнаете что "вы просто неправы". Вот просто неправы и все тут.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027327
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMА правила эти определяются где - на клиенте?
Правила определяются людьми. А хранятся в соответствующей таблице, как я говорил. Ядро системы будет применять эти правила и соответственно им изменять последовательность.

2ALL
Действительно очень жаль, что среди вас не нашлось ни одного, кто хотя бы допустил возможность использования моей идеи. :( С одной стороны следовало ожидать, что вы будете на чём свет стоит говорить о непогрешимости реляционной теории - многи из вас ведь на ней зарабатывают, знают её как свои 5 пальцев, верят. С другой, всё же грустно, что местами это доходит до "дело ленина бессмертно потому что оно верно". Понимаете, я вовсе не отвергаю нормализацию и суррогатный ключ, наоборот. Просто любая попытка хоть чуть-чуть, хоть где-то выйти за рамки постулатов вызывают чуть ли не ярость... Жаль.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027373
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieПравила определяются людьми. А хранятся в соответствующей таблице, как я говорил. Ядро системы будет применять эти правила и соответственно им изменять последовательность.
...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели... Что-то мне это напоминает...
А! Вот! Обратите свой взор в сторону ООБД, так как ваши идеи более близки к ним. Там тоже не ограничивают себя теорией, и теорий то у них формализованных нет, и разработка универсальных БД приветствуется.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027406
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frankie

Да выходите пожалуйста! О какой ярости вы говорите? Вы спросили о том кто прав - вам сказали что формально прав начальник...


PS> Что мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027410
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели...

Уважаемый, какая эвалюция, каких структур? Это вы про вопрос о том сколько нужно полей один или два? Глубоко смотрите однако...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027427
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного флейма,...))

Имеем три таблицы - 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.
-- Kлиенты
create table Client (
   client_id integer not null,
   document_id integer, --default document that can be null
   birthday date, -- дата рождения должна указываться только один раз
   drive_year int , -- год начала водительского стажа
   constraint CLIENT_PK primary key (client_id)
)

create table Document (
   document_id integer not null,
   client_id integer not null,
   doc_type int, -- тип документа
   doc_s char( 10 ), -- серия документа
   doc_n char( 10 ), -- номер документа
   dtbegin date, -- дата выдачи
   dtend date, -- дата окончания срока действия
   Fio char( 50 ), -- атрибут FIO определен конкретным документом
   constraint DOCUMENT_PK primary key (CLIENT_ID,DOCUMENT_ID),
   constraint CLIENT_FK foreign key (client_id) referencing Client(client_id)
      on delete restrict
)

-- Каждый документ может принадлежать только одному клиенту
create unique key IDocument on Document (client_id,document_id)

alter table Client add constraint foreign key (client_id,document_id) references DOCUMENT_FK (client_id,document_id)
-- Таким образом каждый клиент может иметь только один документ по 
-- умолчанию, либо не именть его. Т.е. мы получили две взаимоссылающиеся 
-- таблицы

create table Dogovor (
   dogovor_id int not null,
   document_id int not null,
   client_id int not null,
   ...
   Другие атрибуты договора
   ...
   constraint Dogovor_PK primary key (dogovor_id),
   constraint DOCUMENT_PK foreign key (client_id,document_id) references 
      document (client_id,document_id) on delete restrict
)

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

Так что же получается? Помнится недавно был топик как однозначно идентифицировать личность. Предлагался вариант ФИО+ДР... А может ну его нафиг такой вариант? потому как в этой схеме он просто не нужен...

Да здравствуют составные первичные ключи!!!!
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027428
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХМОбратите свой взор в сторону ООБД, так как ваши идеи более близки к ним
WOW! :) ООБД, за ними будущее, вы не находите? Мне очень приятно, что вы рекомендуете меня туда ;)

funikovyuriО какой ярости вы говорите?
Ярость в инетллектуальном смысле, разумеется. Ярая защита теории, указание на недостаток знаний...

funikovyuriЧто мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели...
Вот-вот! И мне :)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027481
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieС другой, всё же грустно, что местами это доходит до "дело ленина бессмертно потому что оно верно". Понимаете, я вовсе не отвергаю нормализацию и суррогатный ключ, наоборот. Просто любая попытка хоть чуть-чуть, хоть где-то выйти за рамки постулатов вызывают чуть ли не ярость... Жаль.Э нет. Не стоит, как говорится, с больной головы на здоровую (без обид).
Во-первых, нет ничего практичнее хорошей теории (это не мои слова).
Во-вторых, вам ясно дали понять именно практические недостатки вашего "подхода", а именно:
- более сложные в написании запросы
- снижение производительности.
То есть ваш подход неверен с обеих точек зрения, и теоретической , и практической . В этой связи как раз ваша позиция выглядит позицией веры , а не знания . "Я верю, что все сделал правильно, и точка".
Вы говорите, что у вас "все работает". Прекрасно. Рады за вас. Просто поймите, что простенькую систему можно сваять и на коленке, "силовым" методом. А вот для сложных систем нужно уже знать как правильно . Чтобы построить собачью будку особых знаний не надо, достаточно горячего желания и базовых умений. А вот на тех же основаниях мост через серьезную реку не построишь.
Вам здесь пытались сказать "как правильно". К сожалению, ваш подход с позиции веры, а не твердых знаний не позволил вам принять всеобщие рекомендации.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027491
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri...постоянная эволюция структур данных, правила, хранящиеся в таблице, отказ от реляционной модели...

Уважаемый, какая эвалюция, каких структур? Это вы про вопрос о том сколько нужно полей один или два? Глубоко смотрите однако...
Это я несколько неудачно выразился про подход - ХЗ что будет храниться, поэтому загоним все данные в одно поле, а описание их структуры и правила их извлечения в другое поле, и поручим ядру их разгребать
Frankie
WOW! :) ООБД, за ними будущее, вы не находите? Мне очень приятно, что вы рекомендуете меня туда ;)

Не нахожу. И люди за три года на 80 страницах обсуждения в соседнем форуме тоже не нашли.
funikovyuri
Что мне больше всего понравилось, так это то что некоторые уже заметили здесь ограниченность Р-модели...
... не заметив при этом своей ....
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027520
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanТак что же получается? Помнится недавно был топик как однозначно идентифицировать личность. Предлагался вариант ФИО+ДР...
Непонятно, зачем обсуждать то, что давным-давно решено в официальных структурах. ФИО, дата и место рождения.

gardenmanДа здравствуют составные первичные ключи!!!!
Составные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами.

Ключевой вопрос - именно что "правильно применены". Мне пришлось иметь дело с базой, вполне себе OLTP, где ПК из четырех-восьми полей был нормой, а рекордом было, кажется, четырнадцать. Думаю, представляете себе удобство запросов к такой базе. Начинаешь думать, что NATURAL JOIN имеет право на существование...

Код: plaintext
1.
-- Каждый документ может принадлежать только одному клиенту
create unique key IDocument on Document (client_id,document_id)

Вот этого не понял. Чем это отличается от первичного ключа, сделанного парой строк выше?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027608
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman

Код: plaintext
document_id int not null,  client_id int not null,

если этот document_id это id документа клиента, возможно, будет достаточно только его?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027690
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСоставные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами. Денормализации?!
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027817
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri gardenman

Код: plaintext
document_id int not null,  client_id int not null,

если этот document_id это id документа клиента, возможно, будет достаточно только его?

Ага, я это прекрасно понимаю. Но... т.к. есть внешний ключ от таблицы Dogovor к document, то такой индекс имеет право на существование в целях повышения поизводительности обработки внешнего ключа. И, далее если если к договору прилеплен определенный клиент, то в качестве док-та удостоверяющего личность может быть толь док-т, принадлежащий этому клиенту, либо никакого документа. Короче все до тривиальности просто.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027836
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Вам знакомо определение системы?
В чьей интерпретации, позвольте осведомиться?
Ладно, не знакомо, так незнакомо, проехали.


> До относительности атомарности атрибута сами мыслю доведете? :)
Вы опять? ;) Т. е. я должен все написанное еще раз процитировать? ;) Не работает Ваше утверждение в общем случае. Примеры imho было достаточно, чтобы в этом убедиться. Какие еще аргументы нужны? ;))
Примеры были приведены для опровержения вашего "общего случая" независимости атомарности от рамок рассматриваемой системы.
Если вы с логикой дружите, должны знать, что примеры для доказательства не используются :)
Поэтому, чтобы не сойти за болтуна, потрудитесь таки обосновать свое общее утверждение более весомыми утверждениями, чем "это очевидно". Удачи :)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027906
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman

Хм, интересно! Никогда такими вещами не занимался. А где вы про это узнали и где можно более подробно почитать про такой вариант денормализации. Потому как у меня есть сомнения по поводу удобства поддержания такой структуры, возможно я зря волнуюсь - но мне хочется ознакомиться с подходом по-лучше!
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027921
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman

Я все взвесил - получается здорово... :) Мой респект!
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027930
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri gardenman

Я все взвесил - получается здорово... :) Мой респект!

Глазам не верю! обычно все что я тут говорю в форуме - воспринимается в штыки...

Испытываю чувство глубокого удовлетворения...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027969
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АЛЛ
Это писец!!!
,не... даже ПОЛНЫЙ ПИСЕЦ !!!
вы только писать умеете? а читать?

Если это просто прикол, то СЛИШКОМ правдоподобно звучат заблуждения, и в скором времени надо ожидать систем где не только все столбцы хранятся в одном столбце, но и все строки в одной.
А что парсить элементарно, нарущений уникальности нет.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027988
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцов softwarerСоставные ключи - когда они правильно применены - эффективный механизм денормализации со всеми вытекающими преимуществами. Денормализации?!
А чего, по-Вашему?

Простой пример: есть таблицы A >----- B. Рассматриваем варианты:

1. Суррогатный ключ в B. В A - присутствует поле, не имеющее физического смысла (внешний ключ).

2. Естественный ключ в B. В A - присутствует поле, имеющее физический смысл; в определенной ситуации это поле позволит обойтись без join-а в запросе.

3. В ключ добавляются новые поля (делается составной ключ). Соответственно, в A из B копируются дополнительные поля и их значения.

Как по-Вашему, это нормализация, денормализация или что-либо третье?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33027999
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
денормализация - так как вводится еще одна ФЗ document_id==>client_id в DOGOVOR'е
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028127
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда я что-то проектирую я менньше всего думаю о нормальных формах. Просто несколько принципов: Каждое значение атрибута должно появляться по возможности только 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), и по нему уже строить индекс. Если смотреть со стороны теории, то тут нарушены все нормальные формы, но зато - работает офигительно быстро.
Вывод - теория хорошо, но опыт - лучше...
И нормализация - это не цель проектирования...
Цель проектирования - производительность и согласованность (непротиворечивость)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028193
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, мне с вас смешно. Ну нельзя же так... Как только появляется составной ключ, так сразу "денормализация". В приведённом примере никакой денормализации нет. Если каждый клиент ведёт собственную нумерацию, то никакой дополнительной фунциональной зависимости между договором и клиентом нет. То, что тут показано, называется иногда "миграцией ключей" - обычное дело, ничего удивительного. Создание индексов по функциям и вычисляемых полей - нормальная практика, ничего общего с нормализацией не имеющая.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028204
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел, т.е. в таблице dogovor поле client_id не зависит от document_id?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028208
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нумерацию документов имелось в виду.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028266
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ладно, не знакомо, так незнакомо, проехали.

Нет, не проехали. Какое определение Вы имели в виду? Каких систем и каких объектов?

> Примеры были приведены для опровержения вашего "общего случая"
> независимости атомарности от рамок рассматриваемой системы.

Хех, ну х. з., кто с логикой дружит, а кто нет. Вы утверждали (и утверждаете, насколько я понял), что атомарность атрибутов относительна. Я утверждал (и утверждаю), что есть такие атрибуты, для которых это утверждение в общем случае неверно. Для обоснования своей точки зрения я использовал _приведенные Вами_ примеры, когда атрибуты, которые по-Вашему относительно атомарны, таковыми не являлись. Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна. Читать-то Вы, надеюсь, умеете?

Далее я просил (тАвАриСТЧА mir, правда, но это как бы неважно) показать, как будет меняться атомарность атрибутов (список в сообщении был) в зависимости от предметной области. Вместо ответа получил полную ахинею об атомарности времени (это просто прорыв в проектировании какой-то; наверное, навеяно _личным участием_ тАвАриСТЧА mir в разработке АСУ ТП).

Что нелогично и где именно, по-Вашему?

> Поэтому, чтобы не сойти за болтуна, потрудитесь таки обосновать свое общее
> утверждение более весомыми утверждениями, чем "это очевидно".

Не понимаю, какие еще обоснования Вам нужны. Что непонятно в написанном?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028448
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gardenman.
Отлично! Мне действительно понравилось. Возможно это прозвучит странно, но другого решения такой задачи я и не видел.

gardenmanкогда я что-то проектирую я менньше всего думаю о нормальных формах. Просто несколько принципов: Каждое значение атрибута должно появляться по возможности только 1 раз, в одной таблице и в одной строке. Количество объектов (индексы, таблицы и прочее) должно быть минимальным. Должна осуществляться жесткая поддержка ссылочной целостности.
Подписываюсь под каждым словом :)

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


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
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028661
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, дату забыл

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
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028761
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А если серьезно, оспорьте любой из моих постов. С реальными возражениями.

Легко. Например, Ваш пример со временем. Речь идет не об изменении атомарности, а о точности измерения и декомпозиции. Как у времени может меняться атомарность, если по сути это число + единица измерения + точка отсчета, поясните, пожалуйста?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028774
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FrankieНеее, "ФИО, дата и место рождения" это никак уж не гарантирует уникальности.
C теоретической точки зрения Вы правы - и при учете населения используется, если не ошибаюсь, номер свидетельства о рождении. Но в то же время в практике госучреждений, в практике обработки плохих данных, импорта всяких ублюдочных dbf-ов, если не текстовых файлов - используется именно этот набор атрибутов. Хватает.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028842
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Вы утверждали (и утверждаете, насколько я понял), что атомарность атрибутов относительна. Я утверждал (и утверждаю), что есть такие атрибуты, для которых это утверждение в общем случае неверно. Для обоснования своей точки зрения я использовал _приведенные Вами_ примеры, когда атрибуты, которые по-Вашему относительно атомарны, таковыми не являлись. Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна. Читать-то Вы, надеюсь, умеете?
Короче говоря, по-вашему "атомарность _любых атрибутов_ абсолютна и неизменна" - ложное утверждение. Согласен.
Это означает, что по-вашему, существуют атрибуты, атомарность которых относительна.
Осталось сделать шажок и объяснить, с какой стати атомапрность остальных атрибутов абсолютна. Ну, вот так их господь создал. Вырезал из гранита.
Я потому и пытался вас навести на определение системы, как совкупности объектов (элементов) и их связей.
Любая декомпозиция на элементы относительна. Если вы помните историю, то сам физический атом в начале считался эээ... атомарным :))
Но потом оказалось, что он тоже состоит из других элементов.
Соответственно, любая ваша декомпозиция системы на сущности, связи и атрибуты также относительна цели моделирования.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33028866
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Осталось сделать шажок и объяснить, с какой стати атомапрность остальных
> атрибутов абсолютна.

Хех, их абсолютность - штука тоже условная. ;) Попробую объяснить.
[сильно упрощенно] Если атрибут может быть представлен в виде [грантор][сущность] + [идентификатор_грантора], такой атрибут будет атомарным для всех баз данных, исключая базы данных грантора.

> Ну, вот так их господь создал. Вырезал из гранита.

На самом деле это просто идентификаторы, которые некто/нечто раздает монопольно/условно монопольно.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029003
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
[сильно упрощенно] Если атрибут может быть представлен в виде [грантор][сущность] + [идентификатор_грантора], такой атрибут будет атомарным для всех баз данных, исключая базы данных грантора.
Что есть грантор? Надеюсь, не фонд Сороса ?


На самом деле это просто идентификаторы, которые некто/нечто раздает монопольно/условно монопольно.
Да забудьте вы про идентификаторы на время. Не плодите лишние сущности. В модели "сущность-связь" на верхнем уровне нет никаких идентификаторов. Они появятся позже, когда возникнет необходимость детализации в рамках реляционной модели. А если в рамках сетевой, например, так и не появятся.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029017
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучайте логику. В частности т. Геделя.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029025
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Что есть грантор? Надеюсь, не фонд Сороса?

[Публичный] генератор идентификаторов.

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

Вроде пока мы в рамках реляционной, так что ни о чем забывать не будем.

ОК, попробуем по-другому.

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

Попробую провести такую аналогию: представьте, что атрибут всегда принимает значения из строго определенной таблицы, заполненной некоторым генератором. Для практических задач не нужно знать правил работы генератора, достаточно знания факта, что все возможные значения атрибута находятся в строго определенной таблице.

Какую бы сущность мы не описывали, рассматриваемый атрибут всегда будет принимать значения только из этой таблицы.

Вот такие "однотабличные" атрибуты не будут относительно атомарными. ;) Примеры я приводил.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029056
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621ОК, попробуем по-другому.
Требование атомарности напрямую следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения). При этом сам домен - допустимое множество значений данного типа - определяется относительно моделируемой системы.

Говоря о ваших "табличных" генераторах вы не замечаете (или не хотите замечать), что суть такого приема проста - вы искуственно вводите в систему(ы) домен (причины такого решения мы не рассматриваем).
Этот домен, конечно, будет атомарен по определению. По вашему личному определению (пока не вырвется за рамки системы, подобно номерам паспортов или соцстраха). Вы сознательно вводите внемодельный артефакт. И пытаетесь на этой основе показать, что существуют (где за пределами вашей реализации?) сущности, атрибуты которых "абсолютно" атомарны :))

Теперь вернитесь к началу
Атомарность атрибутов - понятие не абсолютное, а относительное.

Вы пытаетесь опровергнуть это утверждение введением в сущность искусственных (служебных, системных) атрибутов, которые к тому же не выходят за рамки реализации конкретной системы(систем) :))

Предлагаю таки закруглиться.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029101
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> А если серьезно, оспорьте любой из моих постов. С реальными возражениями.

Легко. Например, Ваш пример со временем. Речь идет не об изменении атомарности, а о точности измерения и декомпозиции. Как у времени может меняться атомарность, если по сути это число + единица измерения + точка отсчета, поясните, пожалуйста?

Вот это уже разговор.

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

2. Теперь еще раз: время в реальном мире есть процесс непрерывный. Дискретизация времени — единственный способ иметь с ним дело в модели, но огрубление при этом неизбежно (по определению). Степень дискретизации и само представление такой характеристики как «момент наступления события» может быть разной и определяется целью создания модели (в нашем случае — базы данных). Об этом в точности я и говорил.

То есть для частной задачи мы можем представить характеристику «момент наступления события» как атомарное значение типа DATE (представление) с точностью до дня (степень дискретизации). Пример: атрибут «дата рождения» в системе кадрового учета. Для другой частной задачи мы можем представить характеристику «момент наступления события» как совокупность атрибутов [Год: INT, Месяц: INT, День:INT, Время: TIME] (представление) с точность до миллисекунды (степень дискретизации). Пример: замеры с датчика в промышленной системе.

Вывод: как детальность, так и способ представления информации о предметной области в общем случае не абсолютны, а относительны. Они определяются целью создания системы и ограничениями, налагаемыми на систему.

Разумеется, никто не отрицает, что некоторые характеристики некоторых сущностей от системы к системе практически не меняют ни представление, ни детальность. Вес и рост человека обычно вещественное число, суррогатные первичные ключи всегда атомарны (хотя представление их меняется: то INT, то LONG INT, то GUID). Такие примеры есть. Тем не менее, я бы прокомментировал их наличие вовсе не тем, что общее правило «не работает», т.е. не является «общим». Тут другое. Возьмем «рост». Ничто не гарантирует, что не появится система, требующая «декомпозировать» рост человека на, к примеру, [«длина ног», «длина туловища», «длина шеи», «длина головы»]. То есть это вопрос потребности, а не принципа. Теперь возьмем суррогатные первичные ключи. Они пожалуй всегда будут атомарными. Однако не забудем, что они не «настоящие» характеристики. Это артефакты, искусственно создаваемые по искусственным правилам. Поэтому законы реального мира на них вообще слабо влияют.

Поскольку вы сказали, что «Я никогда и нигде не писал, что атомарность _любых атрибутов_ абсолютна и неизменна», то по сути с высказанной мной точкой зрения согласны. Так и завершим спор, если спорить не о чем.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029350
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Предлагаю таки закруглиться.

ОК. Пара пояснений.

> Требование атомарности напрямую следует из определения домена как
> потенциального множества значений простого типа данных,

Принципиальная разница между доменом и приведенным примером. Публичные идентификаторы имеют определенного грантора и применимы исключительно к определенным сущностям. Иначе чего б я сразу не провел аналогию с доменами?

> вы искуственно вводите в систему(ы) домен

Ничего не ввожу. Я хочу показать Вам, что существуют формальные критерии определения условно абсолютных атрибутов. Кроме того, ничего более.

> пока не вырвется за рамки системы, подобно номерам паспортов или
> соцстраха

Даже вне рамок системы номер паспорта _всегда_ будет оставаться номером паспорта. В любой предметной области. ;)

> Вы пытаетесь опровергнуть это утверждение введением в сущность
> искусственных (служебных, системных) атрибутов, которые к тому же не
> выходят за рамки реализации конкретной системы(систем) :))

Это я настолько плохо излагаю или Вы невнимательно читаете? ;)) Я никуда не ввожу никаких новых артефактов. Просто показать существование абсолютных атрибутов вполне можно их перечислением. Хотелось решить другую задачу: предложить формальные критерии определения таких атрибутов. Безотносительно конкретной реализации. Получилось с переменным успехом. ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029395
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mir, Вы полагаете, если я начну представлять вещественные числа в экспоненциальность форме, их атомарность поменяется? ;)

> То есть декомпозиция есть в точности изменение атомарности. Таким образом,
> ваша сентенция внутренне противоречива.

Нет здесь противоречия. Ваша декомпозиция в данном случае - изменение формы представления, а не изменение атомарности. Суть характеристики не меняется.

> для частной задачи мы можем представить характеристику «момент
> наступления события» как атомарное значение типа DATE

Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только. Согласитесь, это как бы совсем не изменение атомарности.

Наличие в разных СУБД различных типов данных, связанных со временем - просто средство упростить жизнь разработчику и пользователю.

> Так и завершим спор, если спорить не о чем.

ОК.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029665
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только. Согласитесь, это как бы совсем не изменение атомарности.Я бы согласился с Вами, если бы только сегодня не наступил на эти грабли. Именно со временем. В таблице, предполагающей хранение только даты (без времени), оказались данные с ненулевым значением часов/минут. В результате система начала сбоить. Откуда там такие данные - пока не понял, но буду бить по рукам того, кто туда эту хрень заносит. Скорей всего себя самого, но это не так уж и важно...

Для меня выходом было бы наличие в базе отдельно типа DATE, TIME & TIMESTAMP (DATETIME), но увы...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029701
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Я бы согласился с Вами, если бы только сегодня не наступил на эти грабли.

Павел, а я-то здесь при чем? Кто-то криво спроектировал базу данных, кто-то туда чего-то не то написал, а шишки на меня? ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029803
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

Где шишки? Какие шишки? Просто в данном случае "дата" никак не должна быть "timestamp", вот и всё. Гранулированность в данном случае - не вопрос представления , как пытаетесь утверждать Вы, но требование логики системы . Вот и всё.

Базу кстати я проектировал. В этом месте кривовато получилось, да.... :-)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33029828
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Принципиальная разница между доменом и приведенным примером. Публичные идентификаторы имеют определенного грантора и применимы исключительно к определенным сущностям.
...и таким образом, атомарны относительно определенного генератора, определенных сущностей и определенных систем, в которых эти сущности используются.

Даже вне рамок системы номер паспорта _всегда_ будет оставаться номером паспорта. В любой предметной области. ;)
Из этого никак не следует, что номер паспорта останется атомарным в любой предметной области.
Например, в паспортно-визовом учете иностранцев/мигрантов. Чтобы уменьшить ошибки ввода вам придется анализировать форматы номеров в зависимости от стран.
В самом номере есть косвенная информация о месте и времени выдачи, т.е. даже сторонняя (вне МВД) аналитика по разрядам и группам дает информацию о распределении пулов.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030053
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Просто в данном случае "дата" никак не должна быть "timestamp", вот и всё.

;) Ну просто неверно в данном конкретном случае архитектор выбрал precision. И не проверяет значение дополнительно.

> Гранулированность в данном случае - не вопрос представления, как пытаетесь
> утверждать Вы, но требование логики системы. Вот и всё.

;) Неважно, какими именно соображениями выбрана precision. Это может быть логика системы, недостаток информации, другие ограничения, - факт в том, что информации больше, чем содержиn timestamp, взять неоткуда. А уменьшать это количество информации или использовать более удобное представление - собственно, все возможные действия разработчика. ;))
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030065
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Frankie
Я считаю, что допустимо строить первичный ключ с возможностью хранения какой-то ещё характерной информации. ... Таким образом, как мне кажется, я повышаю целостность таблицы и экономлю место.

Нифига ты не повышаешь. Более того, если ты в одно поле запихиваешь три - нарушаеть таким образом 1НФ. Это конечно не так страшно, но все же...

Frankie
Более общие разногласия сводятся к использованию LIKE. Я не вижу в этом чего-то предосудительного, тогда как мой начальник считает, что это не

Если LIKE по ключу - это как-то нелепо выглядит.

Frankie
процедур. Мне интересно ваше мнение по этой проблеме.

Твой друх прав по крайней мере в одном - нельзя в первичный ключ запихивать что-то хоть как-то относящееся к предметной области, логике работы программы и тому подобному. Т.е. можно, конечно, но чревато последствиями.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030074
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще хотел сказат. Если такое добро устроить НЕ в РК - то вполне себе хорошее решение (ну если конечно сознаешь, что это дублирование данных и это не пугает).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030088
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> ...и таким образом, атомарны относительно определенного генератора,
> определенных сущностей и определенных систем, в которых эти сущности
> используются.

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

> Из этого никак не следует, что номер паспорта останется атомарным в любой
> предметной области.

Абсолютно верно. Для баз данных грантора это условие не выполняется. Я специально об этом упоминал.

Консенсус? ;))

На самом деле такой подход позволяет формализовать описание достаточно большой группы часто встречающихся атрибутов. А другой задачи я, в общем, себе и не ставил. ;) Хотя некоторые формальные следствия могут показаться интересными.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030113
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9я к тому, что сейчас 80 Гиг стоит примерно 80$. т.е 1Гиг стоит 1 доллар!
Сегодня разговоры о экономии места потеряли свою прежнюю актуальность.
Полный бред. Возьми спроектируй и прохрани таблицу в 100-200 млн записей - тогда посмотрим, как ты изменишь свое мнение.
Когда 1 byte * 10**8 ~= 100 Mbyte ...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030246
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Все временные характеристики реально будут иметь одинаковый тип timestamp. Вы можете задать precision для типа - и только.Во первых, сколько precision на задавай, СУБД индекс по части атрибута строить не умеет. То есть если важна производительность массированных выборок, включающих условия на частях даты (скажем, год или месяц), никакой precision тут не поможет. Это первое.
Второе. К примеру, MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не поддерживает. Я перерыл BOL, но такого не нашел (если неправ, пусть меня поправят).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33030530
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> сколько precision на задавай, СУБД индекс по части атрибута строить не умеет.

Мы не рассматриваем практические аспекты выбора формата хранения атрибутов.

> MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не
> поддерживает.

Насколько я знаю, ни одна из СУБД не поддерживает. ;) Поправьте, если ошибаюсь.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031001
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
SQL> create table times (data varchar2( 2000 ), timestamp date);

Table created.

SQL> insert into times
   2   select lpad('x', 2000 ), trunc(sysdate)+rownum/ 1440 
   3   from dba_objects
   4   where rownum<= 10000 ;

 10000  rows created.

SQL> create index times_time on times (timestamp - trunc(timestamp));

Index created.

SQL> analyze index times_time compute statistics;

Index analyzed.

SQL> analyze table times compute statistics;

Table analyzed.

SQL> set autotrace traceonly;

SQL> select * from times
   2   where (timestamp - trunc(timestamp)) <  5 / 1440 ;

 34  rows selected.

Execution Plan
----------------------------------------------------------                      
    0       SELECT STATEMENT Optimizer=CHOOSE                
    1      0    TABLE ACCESS (BY INDEX ROWID) OF 'TIMES'      
    2      1      INDEX (RANGE SCAN) OF 'TIMES_TIME' (NON-UNIQUE)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031132
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer
Браво!.. Еще давайте вспомним об INDEX_EXTENSION

а еще вспомним номера телефонов, КЛАДР, ОКПО...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031141
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman2 softwarer
Браво!.. Еще давайте вспомним об INDEX_EXTENSION
Я в данном случае просто нагло придираюсь. Безусловно, мелочь, но не люблю неверных утверждений. Хотя идея индексировать телефоны по первым трем цифрам, безусловно, не слишком продуктивна.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031148
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клон Interbase, Yaffil умеет строить индексы по выражениям, в стиле клиппера
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031506
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ключ есть результат вычисления некоторого выражения(необязательно только на базе значений полей из таблиц), так как он будет смотреться в плане атомарности?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33031509
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот вопрос дерзну адресовать строгому господину guest_20040621
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33032557
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer mirВо первых, сколько precision на задавай, СУБД индекс по части атрибута строить не умеет.
Ну это, кстати, не слишком-то верно.
(...)

Уважаемый, вот вам выдержка из BOL (T-SQL):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE INDEX
Syntax

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) 
[ WITH < index_option > [ ,...n] ] 
[ ON filegroup ]

< index_option > :: = 
    { PAD_INDEX | 
        FILLFACTOR = fillfactor | 
        IGNORE_DUP_KEY | 
        DROP_EXISTING | 
    STATISTICS_NORECOMPUTE | 
    SORT_IN_TEMPDB  
}
Как видим, никакого индекса по выражению на столбце В MS SQL Server 2000 нет.
Вы говорите "не люблю неверных утверждений." Слишком смелое заявление.
Если уж взялись меня поправлять, надо было указать, что некоторые СУБД умеют (как частный случай), а некоторые не умеют. Кстати, насколько я знаю, в стандарте SQL-92 ничего не говорится об индексах и о том, как их создавать. Тем не менее можно смело утверждать, что подавляющее большинство СУБД поддерживает индексы на столбцах и лишь некоторые - на выражениях. (Кстати, я в курсе о возможности создания в MSSQL вычислимого столбца, можно об этом не поминать). То есть мое утверждение все же более "общее", чем ваше.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33032558
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> сколько precision на задавай, СУБД индекс по части атрибута строить не умеет.

Мы не рассматриваем практические аспекты выбора формата хранения атрибутов.

> MS SQL Server 2000 precision для DATETIME (его аналог timestamp) не
> поддерживает.

Насколько я знаю, ни одна из СУБД не поддерживает. ;) Поправьте, если ошибаюсь.
То есть все ваши рассуждения по указанному вопросу можно смело дезавуировать. Вот и чудненько.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33032577
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirУважаемый, вот вам выдержка из BOL (T-SQL):
Хм. А не секрет, сколько страниц назад в этом топике последний раз упоминалось что-то, связанное с BOL? Как минимум две трети топика идет.. сугубо теоретический разговор.

Впрочем, Вы меня чуть удивили. Я полагал, что MSSQL умеет индексировать вычисляемые поля (что, согласитесь, есть ухудшенный вариант индексирования по выражению).

mirКак видим, никакого индекса по выражению на столбце В MS SQL Server 2000 нет.
Значит, будет :) Аналитические функции, если не ошибаюсь, туда уже добавляют.

mirТем не менее можно смело утверждать, что подавляющее большинство СУБД поддерживает индексы на столбцах и лишь некоторые - на выражениях.
Я бы сказал иначе - в некоторых СУБД такая операция доступна непосредственно, а в некоторых придется извращаться.

mir(Кстати, я в курсе о возможности создания в MSSQL вычислимого столбца, можно об этом не поминать).
Хм. То есть видимо таки умеет их индексировать?

mirТо есть мое утверждение все же более "общее", чем ваше.
Безусловно. Вы сказали весьма обще: "СУБД не умеет" (обратите внимание - СУБД, а не MSSQL). Я сказал "не так уж и верно" и привел частный пример того, когда Ваше утверждение ложно.

Безусловно, Ваше утверждение более обще. Но мое пока что представляется мне более верным.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33032776
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> То есть все ваши рассуждения по указанному вопросу можно смело
> дезавуировать. Вот и чудненько.

Откуда это следует, позвольте поинтересоваться? АСУ ТП навеяло? ;)

ТАвАриСТЧ mir, я не услышал от Вас вообще ни одного аргумента. Видимо, иногда (как в данном случае) опыт _личного участия_ играет отрицательную роль. ;))

Спасибо за Ваши ответы.

На будущее: если утверждаете что-то, будьте готовы это аргументировать. ;))

Hint: знание SQL или конкретной СУБД отнюдь не эквивалентно навыкам проектирования. ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033061
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> То есть все ваши рассуждения по указанному вопросу можно смело
> дезавуировать. Вот и чудненько.

Откуда это следует, позвольте поинтересоваться?
Ну, напомню, что чисто теоретический аспект я вам разложил по полкам уже давно. Возражений не было. Как перешли к примерам (т.е. практическому аспекту), вы сказали, что таковые вы не рассматриваете. А все ваши высокомудрые рассуждения о precision для datetime вообще, оказывается, оторваны от реалий. Вот и выходит, что толку с ваших постов, как с козла молока :). Чему ж удивляетесь?

guest_20040621АСУ ТП навеяло?А это вы о чем? С каким-то маниакальным упорством их поминаете. Видимо, вам чудится, что это как-то ко мне относится или как-то меня уязвляет... В молоко, внимательный вы наш (для вас это характерно), я АСУ ТП как таковыми вообще не занимаюсь. Или вам нравится в открытую дверь ломиться? :)
guest_20040621я не услышал от Вас вообще ни одного аргумента.Старая песня...
guest_20040621На будущее: если утверждаете что-то, будьте готовы это аргументировать. ;))Хорошо бы вы это поняли когда-либо. К сожалению, до столь же последовательной и развернутой аргументации как у меня вам еще расти и расти. Поэтому вы и «спорите» фразами типа «Тогда это просто ошибочная точка зрения» (ноль обоснований), «Вы делаете распространенную ошибку» (ноль обоснований), «Снова бесполезный пример» (ноль обоснований) и пр. А когда речь зашла о настоящих аргументах, у вас «нет времени описывать всю последовательность рассуждений. Это долго и нудно». Оно и понятно, голословно заявить, что оппонент неправ, легко, а вот обосновать свою позицию — это долго и нудно.
Просто удивительно, как вы приписываете другим свои собственные «грехи»: поверхностные знания и неумение аргументировать.
guest_20040621Hint: знание SQL или конкретной СУБД отнюдь не эквивалентно навыкам проектирования. ;) Рад, что вы начинаете это понимать.

P.S. Вроде только-только перешли от "уколов" в конструктивное русло... Видно, что-то вам неймется. Неужто не устали получать от меня конкретные "плюхи"? Вы что, батенька, мазохист?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033071
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer
В общем-то, со всем, что в сказали, я согласен. Одна поправка:
softwarer Я полагал, что MSSQL умеет индексировать вычисляемые поля (что, согласитесь, есть ухудшенный вариант индексирования по выражению).Так-то оно так, но поскольку придется создать дополнительно поле
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033076
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(косяк вышел с отправкой, продолжаю)
Так-то оно так, но поскольку придется создать дополнительно поле, атомарность-то и меняется. То есть формально будет несколько полей, а не одно поле. Что и требовалось доказать (в споре об атомарности).
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033124
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirТак-то оно так, но поскольку придется создать дополнительно поле, атомарность-то и меняется. То есть формально будет несколько полей, а не одно поле. Что и требовалось доказать (в споре об атомарности).
Я не сторонник сугубо формальных тонкостей.

С точки зрения проектирования, модели данных, между хранимыми вычисляемыми полями и нехранимыми (например, вычисляемыми во view) нет никакой разницы. А фундаментальные вещи (aka "атомарность") не могут зависеть от прикладных вопросов физической реализации.

Практически - у Oracle есть одна фича, которую можно использовать для индексирования "части значения", у MSSQL - другая. У MySQL - может что и не удастся. Но сама по себе задача "индексирования части значения" - физическая; возможность и реализация такого индексирования в той или иной БД никак не влияет на атомарность того или иного атрибута в конкретной модели данных.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033222
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ну, напомню, что чисто теоретический аспект я вам разложил по полкам уже
> давно.

Не припоминаю. Ахинеи - да, было написано достаточно. За аргументы она не прокатила. ;))

> Возражений не было.

Возражения как были, так и остались. Более того, в приведенном Вами примере Вы умудрились сделать ошибку. Браво, тАвАриСТЧ. ;)) На месте Вашего работодателя я бы задумался о Вашей квалификации.

> Как перешли к примерам (т.е. практическому аспекту), вы сказали, что
> таковые вы не рассматриваете.

Дружище, мне интересны примеры по теме, а не примеры вообще. Разберитесь сначала с арифметикой, а потом, если получится, рассуждайте об алгебре. ;))

> А все ваши высокомудрые рассуждения о precision для datetime вообще,
> оказывается, оторваны от реалий.

Ага. Они абсолютно оторваны от любимого Вами мелкомягкого хм... ну, Вы поняли. Видимо, Вы полагаете, что BOL - это монопольное изложение истины, а M$ SQL - эталонная СУБД. Напрасно. ;))

> Вот и выходит, что толку с ваших постов, как с козла молока :).

Дружище, думаю, что для Вас они действительно бесполезны. ;))

> P.S. Вроде только-только перешли от "уколов" в конструктивное русло... Видно,
> что-то вам неймется. Неужто не устали получать от меня конкретные "плюхи"?

;))) Бугага, как принято нынче говорить. Насмешили.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33033476
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА фундаментальные вещи (aka "атомарность") не могут зависеть от прикладных вопросов физической реализации.А вот здесь я бы не согласился.
С одной стороны есть реальный мир, в котором весьма мало «абсолютного», и все довольно относительно. Атомарность ему вообще-то не присуща (я об этом ранее говорил). На другом «полюсе» — конкретная база данных, спроектированная под конкретную задачу. Задача проектирования (в конечном итоге) состоит в отображении реального мира на его модель — БД (еще правильнее сказать на информационную систему, но это опустим). При таком отображении приходится учитывать все ограничения, какие есть: от потребностей заказчика в обработке данных до плюсов и минусов конкретной СУБД. В этих условия некоторая характеристика может быть представлена как атомарным атрибутом, так и набором атомарных атрибутов. Тот же «адрес» для одной задачи всего лишь строка с каким-то там текстом, а для другой — целая «ботва» из номера квартиры, номера дома/корпуса, названия улицы/проспекта/площади/тупика/переулка, названия населенного пункта, страны и все это со ссылками на кучи справочников. Данный пример, бес сомнения, указывает на особенности задачи, но не СУБД. В то же время (вернемся к примеру с датой/временем), если, скажем, выбранная СУБД не позволяет эффективно работать с частями даты/времени, то можно или сменить СУБД (тоже вариант), либо, если это неприемлемо, изощряться по иному. Тут уже скорее учет ограничений СУБД. Согласитесь, трудно проектировать серьезную БД, совсем не учитывая специфику СУБД. То есть можно, но заплатишь чем-то иным, непременно. К сожалению, СУБД весьма отличаются друг от друга, это факт.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33036592
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mir......При таком отображении приходится учитывать все ограничения, какие есть: от потребностей заказчика в обработке данных до плюсов и минусов конкретной СУБД.....
Именно поэтому в проектировании идет разделение на "логическую" и "физическую" модели. Допустим, в логической модели присутствует сущность "активные клиенты". В физической модели она может быть представлена вьюхой. В физической модели для другой БД - хранимой процедурой. А потом в целях эффективности - переделана на хранимый объект (таблицу, материализованную вьюху). Логическая модель при всех этих манипуляциях - остается неизменной. Именно эту разницу я подчеркивал, хотя возможно не выразил достаточно четко.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33046603
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanНо странное дело большинство систем построено по стандартной схеме, когда атрибуты ФИО b id клиента лежат в одной таблице.

В одном из довольно старых проектов для довольно большой организации мы пришли к тому, что сущность Человек не имеет иных атрибутов кроме суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на эту дату). Возможно это крайность, но не бессмыслица.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33046900
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим пол может быть реально изменен в один прекрасный день. А дата
рождения тоже изменялась и их хранилось несколько на некоторых индивидуумов?

--
Regards
Alexander Artamonov


"ModelR" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:1513937@sql.ru...
gardenman

Но странное дело большинство систем построено по стандартной схеме, когда
атрибуты ФИО b id клиента лежат в одной таблице.


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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33046919
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRВ одном из довольно старых проектов для довольно большой организации мы пришли к тому, что сущность Человек не имеет иных атрибутов кроме суррогатного ИД.
Для этого вывода нужна весьма специфичная задача. Поскольку, с одной стороны, "в общем случае" эта сущность таки обладает рядом общих атрибутов - скажем, родители, дата и место рождения, номер регистрационной записи; с другой стороны, в конкретных задачах как правило не требуется история по многим атрибутам (каким именно - зависит от задачи). Задачу, где все необходимые атрибуты неатомарны, придумать наверное можно - но сходу затруднюсь назвать хоть что-нибудь близкое.

Я наиболее близко подошел к такой структуре в проекте для страховой компании. Поскольку у человека может поменяться практически все, там были сделаны сущности "Человек" и "Текущие данные человека". Но и там нашлось то, что дублировать не стали.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33046957
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> В одном из довольно старых проектов для довольно большой организации мы
> пришли к тому, что сущность Человек не имеет иных атрибутов кроме
> суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на
> эту дату). Возможно это крайность, но не бессмыслица.

Порадовали [без подвоха].
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047065
Юличка01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> В одном из довольно старых проектов для довольно большой организации мы
> пришли к тому, что сущность Человек не имеет иных атрибутов кроме
> суррогатного ИД. Все остальное - в ИсторииЧеловека (ИД, дата -> ФИО и др. на
> эту дату). Возможно это крайность, но не бессмыслица.

Порадовали [без подвоха].

Забавно, guest_20040621, а вы вообще для всех аттрибутов ведете историю значений? И эта история - не аттрибут объекта, а сама по себе независимая сущность? И она ведется не для каждого аттрибута (моментального) независимо, а для всех сразу одним махом??

ЗЫ и подвохи у вас какие-то вялые...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047099
Юличка01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку предлагаю усугубить ситуацию. Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть). Сведения об их значениях вы получаете из нескольких источников (не ждали?). Данные разных источников 1) в разной степени недостоверны => 2) могут противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не менее реальными, предположениями?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047123
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Забавно, guest_20040621, а вы вообще для всех аттрибутов ведете историю
> значений?

Member Юличка01, о каких атрибутах речь?

> И эта история - не аттрибут объекта, а сама по себе независимая сущность?

История изменений в контексте Вашего вопроса - это лог состояний. Т. е. нет, это не атрибут объекта.

> И она ведется не для каждого аттрибута (моментального) независимо, а для всех
> сразу одним махом??

Странные у Вас вопросы, member Юличка01. Т. е. обсуждение - как бы само по себе, а Ваши вопросы - сами по себе? Вроде как начиналось все с суррогатных ключей, атомарности атрибутов и зависимости модели от предметной области. При чем здесь история изменений и способ ее регистрации? ;)

Для относительно редко изменяющихся атрибутов - общий журнал, для относительно часто изменяющихся - индивидуальный.

> ЗЫ и подвохи у вас какие-то вялые...

Видите ли, в чем дело: для сайта, посетители которого всерьез обсуждают, хранить фамилию, имя и отчество в разных полях одной таблицы или все-таки в одном, сообщение member'a ModelR [1513937] - просто революция.

Подход, описанный member'ом ModelR, imho ошибочен в данной ситуации. А вот сам факт наличия такого мнения исключительно порадовал.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047128
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не
> имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть).
> Сведения об их значениях вы получаете из нескольких источников (не ждали?).
> Данные разных источников 1) в разной степени недостоверны => 2) могут
> противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не
> менее реальными, предположениями?

Да, если все используемые источники - реляционные (или псевдореляционные с некоторыми ограничениями) и для каждого из них известна структура данных.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047383
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юличка01Вдогонку предлагаю усугубить ситуацию. Вы ничего не знаете о значениях атрибутов, т.е. вы не присутствовали лично и не имеете достоверных сведений ни об одной цифири в вашей БД (так оно и есть). Сведения об их значениях вы получаете из нескольких источников (не ждали?). Данные разных источников 1) в разной степени недостоверны => 2) могут противоречить друг другу. Вы в состоянии решать реальные задачи с такими, не менее реальными, предположениями? Именно так должны быть спроектированы базы данных новостных агенств или скажем разведслужб :) - много противоречивых сообщений на одну тему из разных источников. Если говорить о ключах, то в логической модели ключ источника видимо является частью естественного ключа сообщения. Судя по новостным сайтам - справляются...
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33047795
Юличка01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621

> Member Юличка01, о каких атрибутах речь?

О тех самых, иных, кроме суррогатного ИД.

> История изменений в контексте Вашего вопроса - это лог состояний. Т. е. нет, это не атрибут объекта.

Это, видимо, в контексте вашего миропонимания - лог состояний. Сферический, независимый, неограниченный набор имен собственных. В контексте вопроса - набор исторических атрибутов. Чем у вас человек от парохода отличается? У обоих один атрибут, он же идентификатор. [лог состояний... хе-хе...]

> Странные у Вас вопросы, member Юличка01. Т. е. обсуждение - как бы само по себе, а Ваши вопросы - сами по себе? Вроде как начиналось все с суррогатных ключей, атомарности атрибутов и зависимости модели от предметной области. При чем здесь история изменений и способ ее регистрации? ;)

Да не нравишься ты мне

> Для относительно редко изменяющихся атрибутов - общий журнал, для относительно часто изменяющихся - индивидуальный.

Каких-таких атрибутов? У вас "лог состояний". Т. е. нет, это не атрибут объекта (c). Человек не имеет иных атрибутов кроме суррогатного ИД (c). Общий журнал - денормализация. Бэд.

> Видите ли, в чем дело: для сайта, посетители которого всерьез обсуждают, хранить фамилию, имя и отчество в разных полях одной таблицы или все-таки в одном, сообщение member'a ModelR [1513937] - просто революция.

"Имя", "Фамилия", "Отчество" - элементы справочника "Части имени" + справочники имен, фамилий, отчеств. Нормализация. Гуд. Будьте последовательны

> Подход, описанный member'ом ModelR, imho ошибочен в данной ситуации. А вот сам факт наличия такого мнения исключительно порадовал.

типа нормальный подход, только ситуацию не поняла :)

> Да, если все используемые источники - реляционные (или псевдореляционные с некоторыми ограничениями) и для каждого из них известна структура данных.

? Источники независимые. Люди, организации, базы данных, на основании сведений которых ваш оператор клавиатуры вносит информацию в БД.

Вот приходит к вам мэн
- кто такой?
- Михаил Ходорковский
- а в водительских правах?
- Вася Пупкин. Нет, это я вчера был Пупкин...
- а по отпечатку вашей левой ноги - Золупкин...
- да не может быть! не виноватая я!
- [смачно затягиваясь чупачупсом] Так и запишем: Элвис Пресли. Следующий!


ModelR

> Именно так должны быть спроектированы базы данных новостных агенств или скажем разведслужб

А у вас, следовательно, все данные вводятся на основании одного типа документа, которому вы полностью доверяете. Это что, паспорт? Вам его руки дали подержать? Если нет, будет чем заняться
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33048007
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А у вас, следовательно, все данные вводятся на основании одного типа документа, которому вы полностью доверяете. Это что, паспорт? Вам его руки дали подержать? Если нет, будет чем заняться.

Везде конечно по-разному, если прием на постоянную работу - без паспорта никак. А коли вопрос по достоверности данных, то он заслуживает отдельного топика - плз развернутый вопрос и поехали.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33048087
_hike_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Frankie
Относительно "магических кодов" aka "интеллектуальных ключей" aka ... были комментарии Тома Кайта в одной рассылке по Ораклу, там же обсуждался вопрос выбора первичных ключей.
ссылка здесь
тебе с абзаца Составной ключ в одном столбце .
Успехов.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33048095
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это, видимо, в контексте вашего миропонимания - лог состояний.

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

> Да не нравишься ты мне

Хм... по логике жанра мне следует поинтересоваться, когда именно мы пили брудершафт, но - не буду. Хамство не поможет Вам в Вашей профессиональной подготовке. ;)

> Каких-таких атрибутов? У вас "лог состояний".

;) Вам даже Дейта читать рано.

> типа нормальный подход, только ситуацию не поняла :)

Этот типа нормальный подход не катит для описания физических лиц. Так понятнее?

> Источники независимые.

Абсолютно фиолетово, зависимые они или нет. Существенно, что они ранжированы (т. е. степень достоверности задана).

> Люди, организации, базы данных, на основании сведений которых ваш оператор
> клавиатуры вносит информацию в БД.

Это наиболее простая задача из возможных. ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33048104
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Именно так должны быть спроектированы базы данных новостных агенств

Уважаемый дон хорошо представляет себе технологию работы новостного агентства?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33048418
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Именно так должны быть спроектированы базы данных новостных агенств

Уважаемый дон хорошо представляет себе технологию работы новостного агентства?

К сожалению, не лучше чем разведслужб. Просто пример потока противоречий, который у всех перед глазами.
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33049847
Юличка01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Нет, это в контексте проектирования баз данных лог состояний. Если Вы этого не понимаете - больше читайте.

Нет, это не лог и не состояний Я же вам же написала что это такое.

> Этот типа нормальный подход не катит для описания физических лиц. Так понятнее?

У вас что-то не получается?

> Абсолютно фиолетово, зависимые они или нет.

Чего?? Если один документ является основанием для другого, вам фиолетово?

> Существенно, что они ранжированы (т. е. степень достоверности задана).

Вот и задайте на досуге. Не забудьте про "лог состояний" своей степени достоверности.

> Это наиболее простая задача из возможных. ;)

Нет ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33050135
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юличка01В зеркало играем ?
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33050170
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Нет, это не лог и не состояний Я же вам же написала что это такое.

Хех, да мало ли кто чего написал. На sql.ru я и бОльшую чушь читал. ;)
...
Рейтинг: 0 / 0
Споры о первичном ключе
    #33051265
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юличка01

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


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