powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Отсутствие PK, FK....
25 сообщений из 69, страница 2 из 3
Отсутствие PK, FK....
    #35715862
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быстрее-целесообразность и умение считать деньги.Какая разница на чем написана и на каком железе крутится,если устраивает
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35715868
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr Marmelad А вот разборные домишки разрушаются за часы и выстраиваются за дни - и пожалуйста живи опять... А вы говорите "Жадность".

Хм. ИМХО, всё дело в страховке.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35715890
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVaБыстрее-целесообразность и умение считать деньги.Какая разница на чем написана и на каком железе крутится,если устраивает

Есть тонкий момент - имидж. Технологии и продукты, которые у всех на слуху, такие как Linux, WEB, XML, Java, .NET делают продукт более привлекательным даже при отсутствии технической целесообразности их использования. Акции компании могут возрасти уже только потому, что она использует или разрабатывает продукты на какой нибудь популярной платформе.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35715941
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имидж-из нашей бочки:навороченный cмартфон на последние шиши в кредит для только позвонить,галстук у простого клерка дороже, чем вся экипировка у забугорного CIO etc.
Если Linux повышал бы стоимость,давно бы все на нем сидели.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35717388
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVaЕсли Linux повышал бы стоимость,давно бы все на нем сидели.

Linux, это для энтузиастов.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35718708
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explaSeVaЕсли Linux повышал бы стоимость,давно бы все на нем сидели.Linux, это для энтузиастов.А винда - для мазохистов.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35718788
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelyexplaSeVaЕсли Linux повышал бы стоимость,давно бы все на нем сидели.Linux, это для энтузиастов.А винда - для мазохистов. Windows для профессионалов.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35718790
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expla,

н узря ты это
для профи все по фиг
ос 3.0 или ос/2
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35738071
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серж
Я всегда приводил к 3НФ (без фанатизма), создавал суррогатные ПК (даже у тех таблиц, которым они сейчас казалось бы и не нужны), всегда использовал ссылочную целостность. Всегда старался создавать NOT NULL поля, чтобы избегать постоянных IS NOT NULL/ISNUL()... Кратко - я опирался на эти ограничения и на их основе строил ПО.

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

Вот и сталкивается мой успешный опыт с местным успешным опытом :-)

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

....
у нас в основном массированная закачка из других систем и аналитика


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

О констрейнтах нужно было заботится в системе, где вводится информация, а в данном случае мне думается разработчики поступили совершенно адекватно :)
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35738118
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goffman +1

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

ЗЫ Вообще-то мне очень стыдно писать такие рекомендации, но, надеюсь меня поймут правильно
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739556
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Констрейны нужны.
вот почему.
1. В БД данные могут попасть любым способом, через Сервер Приложений, Федерацию, Через запросы в этой же базе, Импорт из csv фала и т.д. И во всех этих случаях не возможно учесть ограничения на данные, лучше чем констрейны здесь ни кто не справиться.
2. При использовании связи в БД, а не декларативно в коде, всегда понятно что с чем связанно. Легче запросы писать (Есть у вас есть ПК в таблице? вы уже знаете что запрос дубляж не вернет).
3. Ну и они еще на некоторых СУБД помогают при оптимизации.

Ну и на последок представте что БД это тоже своего рода сервер. А Серевера приложений клиенты. Вы же на сервере (т.е. БД) должны проверять то что вам прислал клиент (приложение на сервере приложении, прямое соединение через JDBC и т.д. и т.п.)
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739801
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas,

1. в настоящее время декларативные ограничения целостности поддерживаемые СУБД далеко не всегда позволяют описать все инварианты модели данных. Так что на долю прикладного кода остаётся достаточно работы по проверке данных.

2. для описания БД служит проектная и эксплуатационная документация. Опять таки в силу ограниченности возможностей СУБД вы не сможете описать все свойства данных на только уровне ограничений целостности.

3. иногда помогают, иногда мешают. если помогают, то от чего ж их не использовать... речь то о том, что тут они скорее мешают.

4. БД в силу своей пасивной природы не может быть сервером. Сервер, это СУБД. А проверять данные нужно лишь в той мере, в какой это необходимо для корректной работы системы. Для БД существенно лишь соответствие данных структуре хранилища и типам полей записей, чтобы СУБД могла корректно извлечь эти данные из файлов БД и предоставить эти данные пользователю. Остальное, это подпорки для логики приложений.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739910
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhasКонстрейны нужны.
вот почему.
....
Я не сказал что констрейнты не нужны в принципе.
И не зря выделил жирным шрифтом назначение системы массированная закачка из других систем и аналитика .

Представьте придет из какой-нибудь дочерней компании к вам 5-мег файл данных. вы начинаете его импортировать и вдруг бац, "UNIQUE CONSTRAINT".
Что будете делать?
Искать выпавшую запись и наводить разборки?
а если этих записей десяток-другой по разным причинам?
Если в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают?
Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы?
Нужен этот гемор?
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739915
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
explaolzhas,

1. в настоящее время декларативные ограничения целостности поддерживаемые СУБД далеко не всегда позволяют описать все инварианты модели данных. Так что на долю прикладного кода остаётся достаточно работы по проверке данных.

Согласен не все, однако можно задейсвовать хранимые процедуры, UDF. (Я к этому не призываю, это как контр аргумент)

expla
2. для описания БД служит проектная и эксплуатационная документация. Опять таки в силу ограниченности возможностей СУБД вы не сможете описать все свойства данных на только уровне ограничений целостности.


А всегда ли эта документация есть? Актуально ли она? И еще очень много проблем с документации, да и вообще кто ее читает?
Да возможности Костреинов ограничены, но они и не признаны решать все проблемы. Мы же говорим о простых вещах, как целостность БД(первичные и вторичные ключи, ключи уникальности).

expla
3. иногда помогают, иногда мешают. если помогают, то от чего ж их не использовать... речь то о том, что тут они скорее мешают.

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

expla

4. БД в силу своей пасивной природы не может быть сервером. Сервер, это СУБД. А проверять данные нужно лишь в той мере, в какой это необходимо для корректной работы системы. Для БД существенно лишь соответствие данных структуре хранилища и типам полей записей, чтобы СУБД могла корректно извлечь эти данные из файлов БД и предоставить эти данные пользователю. Остальное, это подпорки для логики приложений.
А что вы подразумеваете под словом сервер? Давайте выкиним и связки сервер приложений и построим обычную двух звенку, И что по вашему в этом случае будет сервером?

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

Да и вообще считаю, что спорить бессмыслено. Все постигается в Практике, вот у меня задача, как раз такая. Такое ощущение, что проектировщик при проектировании вообще не понимал значения ключей. Теперь вот разбираюсь с этим бардаком.
Не спорю можно и в Сервере приложении все так разработать, что будут работать как часики, а БД использовать просто что бы быстро достать данные. Но я же все таки склоняюсь к возможностям БД, на мой взгляд это правильнее.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739918
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лучше гемор, чем превращение БД в хранилище мусора.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739931
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goffman,

Вы мене напомнили один случай, у нас тоже заливка из других систем при чем миллионами записей. Начали заливать, опа ключ мешает. Что делать?! Снесли ключ залили данные. Все задачу выполнили.
А потом через пол годика выходит а от куда тут эти данные, а почему данные по 2 раза залились и т.д. и т.п.

На счет противоречий контстрейнов, с начало нужно констрейны в порядок привести, а потом уж и данные перегонять.
Вы когда поле в таблице из null -> not null переводите вам база что говорит (при условии что есть нулевые записи)?
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739935
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychлучше гемор, чем превращение БД в хранилище мусора.
+1
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739954
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychлучше гемор, чем превращение БД в хранилище мусора.
Громко сказано. С чего вы взяли что непременно будет хранилище мусора?
Если можете, прокоментируйте проблемы , которые я озвучил, можно будет более предметно тему обсудить
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739968
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas
Вы когда поле в таблице из null -> not null переводите вам база что говорит (при условии что есть нулевые записи)?
Не забывайте, что вы не можете контролировать данные, они к вам поступают из внешних систем в виде дампа.
Следовательно следить за чистотой данных обязана внешняя система, а не система закачки.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739978
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GoffmanПредставьте придет из какой-нибудь дочерней компании к вам 5-мег файл данных. вы начинаете его импортировать и вдруг бац, "UNIQUE CONSTRAINT".
Что будете делать?
Искать выпавшую запись и наводить разборки?
а если этих записей десяток-другой по разным причинам?

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

Goffman
Если в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают?
Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы?


Тут имеет место ошибка проектирования взаимодействующих систем. Даже если удасться впихнуть данные в БД целевой ситемы, не факт, что её приложения смогут их обработать. Если уж делать декларативные ограничения целостности, то для того, чтобы их реально использовать в runtime, а не на всякий случай.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35739981
expla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Goffmanolzhas
Вы когда поле в таблице из null -> not null переводите вам база что говорит (при условии что есть нулевые записи)?
Не забывайте, что вы не можете контролировать данные, они к вам поступают из внешних систем в виде дампа.
Следовательно следить за чистотой данных обязана внешняя система, а не система закачки.

Ну это ты загнул... Всё зависит от контракта между системами. Как контракт составлен так и должно быть.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35740000
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если при GoffmanЕсли в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают?
Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы? вы всё равно закачиваете данные в свою базу, то она становится хранилищем мусора по-определению. Потому что вы загружаете в свою базу данные, противоречащие вашим бизнес-требованиям.

второй момент:
GoffmanСледовательно следить за чистотой данных обязана внешняя система, а не система закачки.
внешняя система в общем случае ничего не знает о системе ограничений в вашей базе данных. Более того, она и не должна этого знать и даже более того, ей это должно быть вообще по-барабану. Правильность и непротиворечивость данных в вашей базе данных должны обеспечить вы, как DBA, именно за это вам и платят, если вы, конечно, DBA
кстати говоря, первая цитата противоречит второй, вы не находите?
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35740009
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в целом, склонен согласиться с expla
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35740602
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychесли при GoffmanЕсли в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают?
Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы? вы всё равно закачиваете данные в свою базу, то она становится хранилищем мусора по-определению. Потому что вы загружаете в свою базу данные, противоречащие вашим бизнес-требованиям.

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

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

egorych
Более того, она и не должна этого знать и даже более того, ей это должно быть вообще по-барабану.
Ну это вы уж загнули, а выгрузку она для кого делает? На деревню к дедушке?

egorych
Правильность и непротиворечивость данных в вашей базе данных должны обеспечить вы, как DBA, именно за это вам и платят, если вы, конечно, DBA
Ошибаетесь я занимаюсь разработкой, а не администрированием.

egorych
кстати говоря, первая цитата противоречит второй, вы не находите?
Ничуть, вдумайтесь что сказал автор. Данные собираются из разных ИС.
Например в первой системе номер документа обязан быть уникальным в пределах всей БД.
А во второй системе номер может быть начинаться заново каждый год.

А вам нужно закачать данные из таблиц разных ИС, в одну таблицу аналитической системы.
Какое ограничение в данном случае Вы наложите на номер документ? а?

egorych
в целом, склонен согласиться с expla



Вы можете соглашаться друг с другом сколько хотите, но то что описанная автором топика система долгие годы работает без всяких проблем, подтверждает мою правоту.
...
Рейтинг: 0 / 0
Отсутствие PK, FK....
    #35740619
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expla
Определённо ошибки в данных проще искать и исправлять когда они уже лежат в БД, а не в сыром файле. Практически есть ошибки которые удобно и эффективно отлавливать на уровне СУБД. Тот же самый UNIQUE удобно ловить на этапе добавления записей, тогда как после добавления записи для проверки нам может потребоваться перелопатить очень большой объём данных.

Для проверки чего? Какие основания сомневаться в чистоте переданных данных?
Все ограничения и прочие бизнес-правила УЖЕ заложены во внешнюю систему.
Данные во внешней системе хранятся в соответствии с этими БП.
Если мы выгружаем данные из системы, то мы можем быть уверены, что данные уже содержат все необходимые ограничения, так для чего эти правила еще дублировать в аналитике.
Аналитика - это совершенно другой класс задач.

expla
С другой стороны гарантировать выполнение ограничений можно и другими, иногда очень простыми и эффективными средствами.

Согласен :)

expla
Goffman
Если в дочерней компании поменялась бизнес-логика и ваши констрейнты в головном офисе ей уже не отвечают?
Если набор констрейнтов в одной системе противоречит набору констрейнтов другой системы?


Тут имеет место ошибка проектирования взаимодействующих систем. Даже если удасться впихнуть данные в БД целевой ситемы, не факт, что её приложения смогут их обработать. Если уж делать декларативные ограничения целостности, то для того, чтобы их реально использовать в runtime, а не на всякий случай.
Мне думается, если системы выполняют свои задачи, то никакой ошибки проектирования нет.
Конечно не факт, для того чтобы приложения смогли работать, нужно грамотно все спроектировать и разработать.
Но отсутвие PK и FK совсем не говорит о безграмотности разработчика.
Он вероятно предвидел все возможные проблемы связанные с констрейнтами.
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Отсутствие PK, FK....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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