powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / constraint
10 сообщений из 10, страница 1 из 1
constraint
    #32137203
Бобрый день. Разесните, для чего и где используеться ключевое слово constraint. Если не тяжело приведите пожалуста пару простеньких примеров использования...
Заранее благодарен.
...
Рейтинг: 0 / 0
constraint
    #32137231
Седов А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
constraint - дополнительное условие, накладываемое на значения одной ил или нескольких колонок таблицы
Пример

create table t1
( id integer not null primary key,
art integer not null,
name1 varchar(80) not null,
constraint c_uart_name unique (art, name1))

Замечания:
1. Читайте доку - там подробнее
2. Старайтесь избегать использования. Проверка вводимых данных должна проводиться на стороне клиента. Необходимость в constraint может возникнуть только при работе триггеров.
...
Рейтинг: 0 / 0
constraint
    #32138056
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
г-н Седов

если вы не слишком компетентны в вопросах построения базы данных, прошу не давать советов и не вводить людей в заблуждение. Проверка ДОЛЖНА быть на сервере, по крайней мере в большенстве случаев. Клиент может проверять, может нет, это личные предпочтения каждого. Целостность базы должна быть гарантированны базой. И констрейны это наиболее быстрый и надежный гарант целостности БД.

Приоритеты в использовании механизмов контроля целостности следующие:
1) Индексы и констрейны
2) Триггеры
3) Хранимые процедуры
4) Клиент

вроде ничего не пропустил
...
Рейтинг: 0 / 0
constraint
    #32138185
Седов А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 StarWind

Так.
1. Компетентность на форуме выяснить не представляется возможным.
2. ДОЛЖНА быть на сервере Вопросы: Кому должна ? Почему должна ?
Я могу ответить почему не должна:
а) Если сервер четытырёхксеноновый ящик со сказёвым Рэйдом с меня ростом - то пусть будет на сервере. Но обычно рабочая станция это трехсотый целерон, а сервер - пятисотый третий пень. Повесьте на него сылочную целостность и констрейны и он при обработке более менее объёмных таблиц подохнет.
б) нельзя сейчас(когда требования клиента постоянно меняются и по ходу выполненя заказа и после выполненя) мыслить категориями теории РБД. Знать её несомненно нужно. Но я сейчас переделываю работу(чужую), которая была сдана заказчику 5 месяцев назад. Выполнена технически грамотно, Структура базы чуть ли не 3-я НФ. Просто требования заказчика изменились.
3. Целостность базы должна быть гарантированны базой - не бывает такого. В Аксапте, В САП/Р3 можно нарушить целостность - а это эталоны. Говорить об этом хорошо, когда есть 5 таблиц. А если полсотни денормализованных - слабо такие констрейны написать ?
...
Рейтинг: 0 / 0
constraint
    #32138199
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полсотни, смотря что в них, если это как вы говорите слабосвязные таблицы, то нужн менять структуру базы, если меняются требования заказчика то нужна гибкая структура. И большие таблицы это сколько? И как влияет скорость выборки от наличия констрейнов? Только косвенно, обычно ускоряется, потому как работает по индексам. Если необходимо отключить работу по индексу, так это тоже делается буквально в двасимвола в запросе. Тормозится ТОЛЬКО вставка. Но сколько за раз записей вставляется, обычно с десяток не более, вставляется ручками, так что юзер не видит разницы между 10 мили секундами и 100 милисекундами. Причем я говорю основываясь на таблицах размером в 300 000 записей и эксперементирую я на рабочей машине, P4 пробовал и на P3 все работает и уж что-что а вставка точно. Причем в вставка порядка 500 записей занимает на глаз секунды 2-3. Когда нужно вливать объемы измеряемые десятками тысяч записей то отключаются индексы производится вливка и включается

Кстате говоря, тормозят и достаточно серьезно при вставке и индексы или вы и их не используете?
...
Рейтинг: 0 / 0
constraint
    #32138281
Седов А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 StarWind.
Речь идёт конечно о всатвках.
Я всё понимаю, и в Ваших словах несомненно правда есть. Но, по моим наблюдениям усилия затраченные на создание структур поддерживающих целостность не окупаются. Особенно в силу некоторых особенностей оптимизатора Interbase (одна принудительная корелляция вложенных запросов чего стоит). Индексы используем, но с целью оптимизировать выборку тормозян при вставке ессно именно они.
Как может быть гибкой хотя бы вторая нормальная форма ?

Ситуация:
Больница. Врачи работают в отделениях. Один врач в нескольких отделениях.
В одном отделении несколько врачей. Каждое отделение ведёт приём в своё время. Врач, работающий в отделении ведёт приём в своё время, но не выходя за время работы отделения. Отделений около 20. Врачей - около 100.
Пациент хочет записаться к врачу на определённый день и время. На одно и то-же временя можно записать не более трёх пациентов. Как Вам задачка (она вполне реальная, сделана и работает. Серваком на 20-30 рабочих мест стоит PIII - 800 со 128 м на борту, за которым ещё и кто-то работает. Про такие мелочи, как сбор маркетинговой статистики и выписку бланков с сохранением их базу в формализованном виде не говорю подробнее) ?
Что там про целостность базы и констрейны ?
За один день работы в таблице "график работы врачей" накапливается до 2 тысяч записей. Это потому, что она денормализованная. Так было бы раз в 10 поболе. С тех пор, как я прошлым летом уволился, сервер никто не обслуживает. За это время было всего три проблемы.

Цитата: 500 записей занимает на глаз секунды 2-3.
А вы у 20 клиентов запустите и посмотрите ещё раз.
...
Рейтинг: 0 / 0
constraint
    #32138307
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда задачу начнут обслуживать с десяток человек по очереди будет написано несколько клиентов, тогда и посмотрим :)

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

По поводу цитаты, 20 человек не наберу, но с десяток будет... одновременно на этих объемах + сложные отчеты с промежуточными таблицами...

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

А их не хватит. Нужны триггеры с селектами, лезущие по трём-четырём таблицам. Вот они-то базу и погасят. Гарантировано.
Там народ купил программу для лаборатории. Сделанную "по канонам". Будет 5-10 машин. Она ещё не работает, а двуглавый сервак на ксенонах уже стоит, пылится. Разработчик сказал, что иначе не потянет.
...
Рейтинг: 0 / 0
constraint
    #32138403
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что? может задача такая, может руки кривы

но не думаю что будет проще поселектить вместо триггеров с клиента и еще подгрузить тем самым сеть....
...
Рейтинг: 0 / 0
constraint
    #32138463
Седов А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 StarWind

Так на клиенте селекты уже сделаны !
Чтобы пациента записать, нужно посмотреть, когда врач работает. И обычно так и бывает.

"Это не бага, это фича" (C) QZ : -))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / constraint
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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