powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Споры о первичном ключе
25 сообщений из 165, страница 6 из 7
Споры о первичном ключе
    #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
25 сообщений из 165, страница 6 из 7
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Споры о первичном ключе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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