powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Поругайте Акцесс. Очень надо.
22 сообщений из 147, страница 6 из 6
Поругайте Акцесс. Очень надо.
    #32392409
aPT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*И еще маленькое дополнение. Не во всех системах PK необходим для редактирования. Таблица ORACLE, например, редактируется и при отсутствии PK (например, в ней нет PK, но есть пара UK)
Он как-бы даже и не нужен. Главное чтобы не было 2-х полностью одинаковых записей. У меня например в базе нет ни PK ни FK в чистом виде. Есть некие условные составные ключи, не обьявленные в базе как ключи.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392488
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня например в базе нет ни PK ни FK в чистом виде.

Извините конечно, но ПРОСТО ЗАШИБИСЬ!
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392554
Читатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня например в базе нет ни PK ни FK в чистом виде. Есть некие условные составные ключи, не обьявленные в базе как ключи.

К сожалению довольно распространеная ситуация.
Иногда даже понятно как она сложилась исторически.
Но всеравно руки разработчику оторвать хочется !
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392564
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 *
Не во всех системах PK необходим для редактирования. Таблица ORACLE, например, редактируется и при отсутствии PK (например, в ней нет PK, но есть пара UK)

Акес тоже позволяет редактировать данные без PK и вообще без каких-либо индексов.
Получаеться Акес круче Оракла ?

Пример, который я привел - искусственный, но он демонстрирует неразумность принятого в Access 97 правила проверки FK

"Неразумность" Акеса слихвой компенсируеться разумностью разработчика.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392596
aPT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе-хе. Меряться генераторами будем?
Для чего нужны ключи на практике?
PK:
1 - обеспечение уникальности каждой записи. Псевдоключи в моей базе имеют все признаки уникальности: 2 поля отвечают за уникальность базы на планете Земля (есть сложная система репликации и они указывают на источник записи) и 1 поле формируется генератором. Неуникальной данная связка быть не может.
2 - для обновления таблицы. Таблицы как объект типа *Table не использую вообще. Использую запросы к хранимым процедурам и для рефреша (какой нахиг рефреш, когда навигаторов всего 3 на 60 форм) нужные *UpdateSQL. Кстати редактирование в сетке почти не использую. Не нужно.

FK:
1 - Связи между таблицами. Ну понимаешь через SQL и хранимые процедуры можно такое навернуть, что никакому любителю Paradox не снилось.
2 - Запрет на удаление подчиненной записи. Ну перед удалением идет строгая проверка на правильность такого решения как клиентом, так и серверной логикой и в случае принятия узером такого решения она не удаляется, а помечается удаленной. Удалять можно лет через 5 после отметки как удаленной только после помещения записи и подчиненных ей в долгосрочный архив. Да и триггеры ставят надежный заслон в крайнем случае. Все-таки 350 кило серверной логики уже накатал.
3 - каскадные действия по отношению к подчиненной таблице. А триггеры для чего? В носу ковырять?

Ну убедите меня что я не прав. Вот только аргументы не забудьте. Не люблю пустые споры.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392608
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aPT

Псевдоключи в моей базе имеют все признаки уникальности

Так чего там у вас нет - ключей или constraint'ов?
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392611
aPT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня нет PK,FK и constraint'ов.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392612
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это означает что вы отказались от DRI а не от ключей - ключи это группа(1..*) полей отвечающих за уникальность записи
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32392684
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
>"Неразумность" Акеса слихвой компенсируеться разумностью разработчика.

К сожалению нет. Ибо способностью предвидеть будущее обладают немногие...
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32393005
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 IgorM

>Там все к месту было, перечитай внимательнее. Я был не прав.

DAO не входит в систему акцесовской обработки данных, поэтому приводить DAO-шный синтаксис в качестве доказательства было некорректно, поскольку транзакции в принципе могут быть реализованы не в самом акцесе а в системе DAO-акцес. А если коннектится через ODBC, транзакции пропадут или нет?

> А почему правил Кодда всего 8? Я читал 12:

Посмотрел по ссылке. Мы говорим о немного разных вещах: в цитируемой статье приводятся не правила, а возможности или сервисы, которыми с необходимостью должна обладать СУБД (не обязательно реляционная). В статье их 8:
1) data storage, retrirval and update
2) a user-accessable catalog
3) transatction support
4) concurrency control services
5) recovery services
6) autorization services
7) support for data communaications
8) integrity services

>И серьезных противоречий с ними Access имхо не имеет.

Просто не удовлетворяет некоторым и все, это не всегда противоречие. Например в полной мере не поддерживает транзакции: Transactions are not supported for linked tables. Сразу говорю, я не знаю, что это значит, это цитата из хелпа по TRANSACTION Statement.

Но вообще-то мы говорили о MySQL, там транзакций нет вообще никаких.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32393463
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с127DAO не входит в систему акцесовской обработки данных, поэтому приводить DAO-шный синтаксис в качестве доказательства было некорректно, поскольку транзакции в принципе могут быть реализованы не в самом акцесе а в системе DAO-акцес. А если коннектится через ODBC, транзакции пропадут или нет?

Что значит в "самом Access"? Access - это клиент, data access systems в терминах MS, просто максимально интегрированный с Microsoft Jet database engine. По умолчанию, MSA'97 использует DAO для доступа к базам mdb, в которых MS Jet поддерживает транзакции, поэтому пример в "синтаксисе" DAO вполне оправдан. А если коннектится через ODBC поддержка транзакций будет зависеть от подключаемой БД и драйвера ODBC.

с127в цитируемой статье приводятся не правила, а возможности или сервисы, которыми с необходимостью должна обладать СУБД (не обязательно реляционная).

Later Dr. Codd clarified his model by defining twelve rules (Codd’s Rules) that a database management system (DBMS) must meet in order to be considered a relational database .

In practice, many database products are considered 'relational' even if they do not strictly adhere to all 12 rules

Идеал обычно редко достижим.

c127Transactions are not supported for linked tables

linked tables могут быть, например, текстовыми файлами, для них действительно транзакции не поддерживаются, если же внешняя таблица будет из другого mdb, то транзакции могут использоваться.

А что касается MySQL, то цитату из предыдущей ссылки я уже приводил: "In practice..." и т.д.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32394595
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 IgorM

>По умолчанию, MSA'97 использует DAO для доступа к базам mdb, в которых MS Jet поддерживает транзакции, ... .

А если я из акцесса буду коннектится к mdb файлам через ODBC (если вдруг такое возможно), то будут ли поддерживаться транзакции? Будет ли задействован MS Jet в этом случае?

>А если коннектится через ODBC поддержка транзакций будет зависеть от подключаемой БД и драйвера ODBC.

Дельфи умеет разговаривать через одбц с кем угодно. Будет ли дельфи поддерживать транзакции в mdb файлах? Будет ли задействован MS Jet в этом случае?

>Later Dr. Codd clarified his model by defining twelve rules (Codd’s Rules) that a database management system (DBMS) must meet in order to be considered a relational database.

In practice, many database products are considered 'relational' even if they do not strictly adhere to all 12 rules

1) Есть определение Кодда, есть его толкования. Предлагаю толкования пока не обсуждать.

2) В моей ссылке речь идет о СУБД, в твоей - о РСУБД, которые есть подмножеством первых. Это одна из причин непонимания.

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

Раз транзакции не поддерживаются, то это не СУБД в смысле Кодда. У него для внешних файлов исключений не предусмотрено: транзакции либо есть либо их нет. Если вдруг оракл или ДБ2 не поддерживает транзакции с внешними файлами, то это тоже не СУБД в смысле Кодда. Или же поддержкой внешних файлов никогда не нужно пользоваться.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32394653
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127А если я из акцесса буду коннектится к mdb файлам через ODBC (если вдруг такое возможно), то будут ли поддерживаться транзакции? Будет ли задействован MS Jet в этом случае?

Возможно, почему нет...
1. Да.
2. Может быть задействован, а может не быть (я имею ввиду до ODBC драйвера).

с127Дельфи умеет разговаривать через одбц с кем угодно. Будет ли дельфи поддерживать транзакции в mdb файлах? Будет ли задействован MS Jet в этом случае?

1. У меня дельфи нет, BC++Builder против StartTransaction, Commit или Rollback, при ODBC-подключения к mdb, не возражает и они отрабатывают как надо.
2. Честно говоря, точно не знаю, как ODBC-драйвер взаимодействует с mdb, но очень вероятно, что посредством MS Jet Engine (во всяком случае, ссылки на него в odbcjt32.dll присутствуют).

По теории (Р)СУБД спорить не буду, меня не очень беспокоит вопрос полного соответствия каких-либо конкретных БД правилам Кодда.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32395279
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Есть подозрение, что при соединении с mdb-базой через ODBC индексы игнорируются
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32395304
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что при соединении с mdb-базой через ODBC индексы игнорируются
Смотря откуда
В связке "Jet + ODBC + какой-нить сервер" с индексами точно беда, по крайней мере рашмор для них не будет использоваться. Но это из-за уродской связки "Jet+ODBC". При использовании ODBCDirect все работает как и должно.

З.Ы. А как вы себе представляете коннект из mdb в mdb через ODBC? Сам аксес ведь не даст так прилинковаться. Не из аксеса - можно, и помоему индексы не протераются.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32395493
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПА как вы себе представляете коннект из mdb в mdb через ODBC? Сам аксес ведь не даст так прилинковаться.

Без линковки, программно через CreateWorkspace, OpenConnection и соответствующий DSN.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32395508
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
>З.Ы. А как вы себе представляете коннект из mdb в mdb через ODBC? Сам аксес ведь не даст так прилинковаться. Не из аксеса - можно, и помоему индексы не протераются.

И Access и VB - нет, клиент был написан на C скорость заметно падала уже на сотнях записей.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32396021
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 IgorM

>2. Честно говоря, точно не знаю, как ODBC-драйвер взаимодействует с mdb, но очень вероятно, что посредством MS Jet Engine (во всяком случае, ссылки на него в odbcjt32.dll присутствуют).

Получается что MS Jet Engine выполняет роль сервера. А DAO в этом участвует?

Если DAO живет в odbcjt32.dll, то я согласен, его наверное нужно считать частью MS Jet Engine.

>По теории (Р)СУБД спорить не буду, меня не очень беспокоит вопрос полного соответствия каких-либо конкретных БД правилам Кодда.

Дело в том что MySQL вообще никак не соответсвует, разве что в последней версии ввели транзакции. Но вроде бы еще нет.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32396176
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMЧестно говоря, точно не знаю, как ODBC-драйвер взаимодействует с mdb, но очень вероятно, что посредством MS Jet Engine
Даже очень вероятно. Без установленного Jet'а с mdb вроде как не получится работать - ни через ODBC, ни через OLEDB, ни с использованием ADO, ни с использованием DAO

2 с127
Получается что MS Jet Engine выполняет роль сервера. А DAO в этом участвует?
Не участвует.
Если DAO живет в odbcjt32.dll, то я согласен, его наверное нужно считать частью MS Jet Engine.
Не живет.

Ты все еще не можешь отойти от примера, который я для Cat2 привел? Сочувствую.

Дело в том что MySQL вообще никак не соответсвует, разве что в последней версии ввели транзакции. Но вроде бы еще нет.
В самом MySQL вроде как ввели. А уж тем более в его клонах.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32396207
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127Получается что MS Jet Engine выполняет роль сервера. А DAO в этом участвует?

Access через DAO к jet'у и обращается. Точно так же можно обращаться через ADO.
...
Рейтинг: 0 / 0
Поругайте Акцесс. Очень надо.
    #32397361
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Лох Позорный

>В самом MySQL вроде как ввели.

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

>А уж тем более в его клонах.

А что такое клоны MySQL, ты его с интербейзом случайно не перепутал?

2 IgorM

>Access через DAO к jet'у и обращается. Точно так же можно обращаться через ADO.

Речь не об акцессе, с ним все понятно, а о взаимодействии ODBC и акцесовской БД (IgorM>Честно говоря, точно не знаю, как ODBC-драйвер взаимодействует с mdb, но очень вероятно, что посредством MS Jet Engine (во всяком случае, ссылки на него в odbcjt32.dll присутствуют). Но Лох Позорный уже ответил.

Благодарю за разьяснения, кое-какие вопросы прояснились.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Поругайте Акцесс. Очень надо.
    #33725057
Nikolai_Aus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про transactions' option "dbFlushOSCache"
здесь есть ответ: http://support.microsoft.com/kb/q165829
В кратце: Нужно использовать 1 или dbForceOSFlush.
...
Рейтинг: 0 / 0
22 сообщений из 147, страница 6 из 6
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Поругайте Акцесс. Очень надо.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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