СообЧа > База Знаний > Базы данных

Вопрос

А чем отличаются распространенные базы данных? Для каких случаев какие? (Clipper,SQL,Oracle,другие).

Ответ

Во-первых, различаются они по типу доступа: локальные (Clipper, dBase, FoxPro, Access, Paradox) и сетевые (InterBase, MS SQL, Oracle, Informix, DB2).

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

В основном все локальные БД ориентированы на формат *.dbf, по крайней мере, все они его поддерживают.
Одно из решений для обеспечения совместной работы с локальными базами заключается в предоставлении полного доступа (в терминах Windows) к таблицам базы данных на одном ПК (сервере). Достаточная производительность будет обеспечиваться только при работе в локальной сети с набольшим числом ПК, т.к. при выполнении запросов на локальный ПК будет передаваться ВСЯ! информация из БД, а только затем обрабатываться. Т.о., если несколько пользователей попробуют получить некоторую информацию из БД, сеть будет перегружена и результатов обработки придется ждать очень долго.

Кроме того, на программиста ложится дополнительная обязанность по поддержанию целостности локальной БД. Например, при перестройке индекса доступ пользователей должен быть запрещен и т.д. В свою очередь, сетевые БД специально разработаны для работы в многопользовательском режиме. Работа с ними идет через SQL — структурированный язык запросов. Главное отличие от локальных БД — работа с группами записей. Например выбор, вставка, удаление и т.д. При работе с сетевыми БД на сервер поступает относительно короткий запрос, далее сервер производит его обработку и возвращает клиенту ОТВЕТ!!!.

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

Что же касается отличий самих сетевых БД друг от друга — различные платформы ОС, поддержка триггеров, генераторов, хранимых процедур, а также простота/сложность установки и поддержки. Одной из наиболее простых в эксплуатации, на мой взгляд, является Borland InterBase.

Лунин

Вопрос

В какой СУБД лучше работать, а то на моем предприятии много программ на FoxPro 2.5 под DOS, с Access что-то не очень. Хорошо получается в системе 1С, но там своя специфика. Так на чем же писать базы (объемы данных большие — учет продукции, до 25000 наименований).

Ответ

Мне нравится FoxPro 6.0, которой я давно пользуюсь. Движок этой СУБД неплохой. Базы «крутит» он неплохо. Проверено на машине P-III-500 UDMA100 переход по записям в таблице с первой на 1000000, поиск по ключевому слову, выборка определенных записей из таблицы составило чуть более секунды. Язык Фокс ориентирован на СУБД:

Запоминание вывода инструкции SELECT-SQl в массиве.
Копирование структуры таблицы в массив и создание второй копии таблицы по содержимому массива.
Использование инструкции INSERT-SQL с массивами.
Адресация элементов массива как c двумерной, так и с одномерной индексацией.
Большое наличие специализированных функций для работы с массивами.
Функции конвертирования даты и времени в строки и обратное преобразование.
Программное изменение макета таблицы
Все это и многое другое с потрясающей скоростью.
Язык Фокс очень похож на Бейсик.
Отличное управление сервером SQL.
Возможность создание ехе-файлов (только в профессиональном выпуске FoxPro 6.0)
И прочее, прочее, прочее.
Легок в усвоении.

Правда, не все так хорошо в Фокс.

Отсутствие автоинкрементных полей.
Не получается чистый ехе-код.
Уровень вложенности подзапросов равен двум (в Акцесс больше).
Безопасность данных Фокс низкая. Поэтому данные (базу, таблицы, процедуры) хранят на сервере.

Таким образом в качестве небольших локальных систем можно рекомендовать Акцесс. Один из самых главных плюсов — это то что все в одном файле, и это же в тоже время является минусом Акцесс, т.е. Акцесс тормозит, когда в его этом едином файле накапливается информация.
Так что подумайте. Если масштабы вашей БД невелики и вы рассчитываете на небольшой учет, то выбирайте Акцесс. Акцесс прост в усвоении и можно найти много книг по этой системе.
Если же Вы хотите иметь распределенный доступ, управлять в масштабах Вашего предприятия, то без раздумья выбирайте Фокс, если ни какая другая альтернатива Вам не подходит.

DZ_Zero-Q

На мой взгляд использование СУБД FoxPro это не плохой вариант. Но есть свои «но». При больших объемах данных база просто становится мертвой. У меня на раньше работе (магазин) были случаи, когда люди приходили раньше на 1-2 часа, чтобы запустить базу и открыться вовремя. Сейчас я работаю под ДОСом с базой MSM. Это реализация стандарта языка М. Иерархическая БД.

Предназначена для организации сложных структур данных, хранения данных и обработки. Поддерживает создание сложных сетевых конфигураций. У меня работает под ДОСом и NT 4.0/2000. Еще одна СУБД — Cache 5.0. Мощная вещь. Работает под PRO 2000/Linux. Позиционируется как СУБД для интернета и корпараций.

eugene

Я с 1988 года писал на ДИАМСе, потом на MSM, сейчас на CACHE. Высокая сорость и надежность. На CACHE, через интернет, создает список остатков на 30 000 строк за 2 секунды.
Подробно читайте на www.cache.ru

Вопрос

Есть ли в интернет ресурсы для желающих начать освоение MS SQL Server и Oracle ?

Ответ

Навалом. Только ты выбери, что именно. SQL конечно на уровне простых команд похож, но как дойдет до хранимых процедур — тут все разное. Проще, удобнее и безглючнее конечно Oracle. И ресурсов по нему больше. Яндекс выдаст несколько сотен ссылок. Выбирайте сами. По Ораклу даже рассылка есть на subscribe.ru ее код comp.soft.db.oraclefromzero название СУБД Oracle «с нуля»

Если знаете как пользоваться почтовым роботом — скачайте архив. Вышло уже порядка 10 выпусков.

Для начального освоения SQL скачайте в инете книгу «Понимание SQL» — она небольшая (около 150К) и очень полезная. Но она по самолму SQL и практически все что в ней описано работает на любой базе данных. К сожалению ссылка у меня не сохранилась. Но эта книга очень популярна и в инете есть повсюду, любой поисковик ее найдет.

Из конференции Expert_FAQ

Вопрос

Как из программы при работе в сети Novel NetWare определить, какой пользователь в данный момент работает с базой данных?

Ответ

В Clipper Tools II есть много функций для поддержки Novel Netware. Функция nnetwhoami возвращает login-имя пользователя.

Из конференции Expert_FAQ

Вопрос

Ставлю скрипт требующий наличие БД. Что мне делать, как мне его настроить?

Если кто-то сможет помочь, возьмите за пример любой PHP-форум.

У меня стоит: Apache + PHP4 + Perl + MySQL, все настроено, все работает.

Ответ

Поищи в настройках скрипта, config.php обычно, параметры соединения к mysql и установи их соответственно своим.

Из конференции Expert_FAQ

Вопрос

Есть кнопка на форме. Нажимаешь — выполняется определенный фильтр. Как бы отключить при повторном нажатии на эту-же кнопку фильтр? Может есть какое-нибудь другое решение?

Ответ

Можно в коде формы вписать строку (перед всеми процедурами):

Private IsFiltr as Boolean

Тогда в обработчике кнопки можно > использовать значение этой
переменной как некий флаг:

Private sub Command1_Click (Button as Long)
Select case IsFiltr
case True 'Отключить фильтр…
IsFiltr = False

case False 'включить фильтр…
IsFiltr = True

End Select
end sub

******

В Delphi можно делать так:

IsFiltr:=not IsFiltr

kolesnik_an

Вопрос

Из VBA делаю запрос к MSSQL через DAO Select * From Table where Дата_Занесения='05.05.05'
где дата_занесения типа DateTime

Запрос не работает, говорит не корректный формат.
Если использовать функцию Convert из SQL то говорит не известная функция.

Ответ

Кажеться так

Select * From Table where Дата_Занесения=#05.15.03#

это дата 15 мая 2003 года

Из конференции Expert_FAQ

Вопрос

У меня такая проблема. Программа работает с базой данных Access. Путь к ней и драйвер (Microsoft Access Driver (*.mdb)) прописывается в ODBC при инсталяции. Но на некоторых машинах почему-то возникает ошибка при соединении с базой данный. Не видит программа базу. Т.е. на одном компе все нормально, на другом компе — нет соединения с базой. ADOConnection не может соединиться. Ошибка возникала под 98 виндой.

Ответ

Очень удобно работать с «Microsoft.Jet.OLEDB.4.0» в качестве провайдера.
В connectionstring можно на лету прописать например:

sc := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";'
+
'User ID=Admin;Mode=Share Deny None;'
+
'Extended Properties="";Locale Identifier=1033;'
+
'Jet OLEDB:System database="";'
+
'Jet OLEDB:Registry Path="";'
+
'Jet OLEDB:Database Password="";'
+
'Jet OLEDB:Engine Type=5;'
+
'Jet OLEDB:Database Locking Mode=1;'
+
'Jet OLEDB:Global Partial Bulk Ops=2;'
+
'Jet OLEDB:Global Bulk Transactions=1;'
+
'Jet OLEDB:New Database Password="";'
+
'Jet OLEDB:Create System Database=False;'
+
'Jet OLEDB:Encrypt Database=False;'
+
'Jet OLEDB:Don''t Copy Locale on Compact=False;'
+
'Jet OLEDB:Compact Without Replica Repair=False;'
+
'Jet OLEDB:SFP=False';
cs := 'Data Source=\\srv\Base\my.mdb;
+ cs;
Connection := true;
tablya.open;


И при инсталляции никого прописывать не нужно.
Строку: 'Data Source=\\srv\Base\my.mdb;' (в конце ';' обязательно) можно читать например из *.ini

Т.е. можно пользоваться не одной базой, или одной с разных компьютеров, или…
И привязать можно врукопашную, поправив в блокноте путь к базе. Во общем, куча удобностей, по сравнению с альясами.

Из конференции Expert_FAQ

Вопрос

Меня попросили сделать конвертер БД разных форматов в текстовый, может, подсобите советом, принципом решения такой задачи?

Ответ

Ну вот, например, так:
из таблицы в цикле (от i = 0 до i = кол-во строк (от j = 0 до j = кол-во столбцов)) — содержимое строка[i]колонка[j] загоняешь в чистый буфер, т.е. у тебя в буфере получается строка, состоящая из строки таблицы, а этот буфер пишешь в заранее открытый текстовый файл.

|abc|de|fgh|
|123|45|678|
— так в таблице,

abcdefgh — так в буфере после первого прохода(строка 1, колонки 1,2,3). Можно одновременно вставлять между частями пробелы, тогда будет так: abc de fgh.
12345678 или 123 45 678 — в буфере после 2-го прохода(строка 2, колонки 1,2,3).
Тогда в тхт-файле будет

abcdefgh
12345678

или
abc de fgh
123 45 678


shadow.

Вопрос

Какая ConnectionString для ADO будет для SQL Server БД? Достаточно ли 'DNS=myDB'?

Ответ

Попробуй перегнать с помощью MS Data Transformatuion Services. Выбери пункт Копировать все объекты.

Provider = "SQLOLEDB"
.ConnectionString = "User ID=sa;Initial Catalog=DbName;Data Source=SqlServerName"

DSN тоже пойдет. Только надо будет правильно зарегистрировать базу.

Вопрос

На вашем сайте есть ответ на вопрос «что такое база данных».. а вот какой смысл вы вкладываете в понятие «база знаний»? что это, с вашей точки зрения.. и какая между ними разница?

Ответ

База знаний это своего рода набор правил для обработки информации. На основе баз знаний строятся т.н. экспертные системы, предназначенные для анализа и т.п. поступающей информации — технической, финансовой, тактической — да в общем какую запрограммируют, такую перемалывать и будет.
Так что разница между БД и БЗ функционально-экзистенциальная — БД это набор однотипной (более-менее) упорядоченной информации (и привязанных к ней правил ввода\вывода (формы там или маски ввода)) а БЗ — это (можно сказать) набор процедур и функций для обработки информации, имеется в виду не ввод\вывод, упорядочивание и хранение, а анализ, составление прогнозов, и прочее. Вот вам надуманный пример.
Допустим вы собираете инф-wb. о температуре комп-ра. БД хранит все данные, выводит красивые графики и т.п.
А БЗ будет вам сообщать (к примеру) что процессор сгорит через 1.5 секунды, жесткий диск не работает из-за замерзшей смазки, а видеокарта сгорела и ее надо заменить на такую-то модель, потому что у нее охлаждение устроено лучше и при среднестатистической температуре видеоподсистемы вашего компьютера и системы в целом новая карта проработает 5 лет.

Из конференции Expert_FAQ

Вопрос

Делаем мы тут 2 сайтика. Один сайт презентационный с интернет-магазином. Ожидается около 50-70 хостов в день. Что лучше использовать: MDB или MS SQL? А второй сайт — система инет-магазинов. Ожидается 1000 — 1200 хостов в день. Вопрос тот же. И какие неудобства я получу, если выберу mdb?

Ответ

Мы тут тоже делали два сайтика. :)
На магазине так и есть — 50-70 хостов и более. База на акцессе. Вот уже второй год работает. Тьфу-тьфу-тьфу. постучим по дереву. Проблем с ней нет никаких, кроме организации бэкапа. С MS SQL в этом плане проще и надежней.
Система магазинов сделана на MS SQL трафик — 4-5 хостов в день. Не пошел проект, блин :(

Для системы магазинов MS SQL предпочтительнее, так как тут можно для каждого магазина держать отдельную базу. В случае акцесса — это куча мдбшников. Потом пойди, разберись с ними :).
Есть еще одна проблема с mdb. если ты часто удаляешь и вставляешь записи (например, при синхронизации со складской программой), база будет заметно расти. Закомпактить ты ее сможешь, только полностью остановив сервер.
А так решения и на MS SQL и на Access вполне удовлетворяют потребностям.

********

А я бы порекомендовал использовать базу MySQL. Запросто держит как 5-10 хостов в день так и 1000-2000 (если проект пойдет). Запрос SELECT выполняет гораздо быстрее Access'a. Бесплатная с кучей документации. Очень много компонент для доступа, утилит для обслуживания в большинстве тоже бесплатных. А связка php+MySQL убивает ASP+Access насмерть.

set6

Вопрос

Какой лучше всего выбрать сервер баз данных для создания автоматизированной системы среднего масштаба (на 1-10 рабочих станций), чтобы работал под Win 95/98 и, желательно, был бесплатным ?

Ответ

Можно взять MySQL. Он бесплатный, работает на 9x/NT/2k/XP. Многих вещей нет (PL/SQL, хранимые процедуры), но для небольших баз вполне годится. Если надо PL/SQL и хранимые процедуры, то можно взять PostgreSQL. Как таковой он под Win32 не ходит, но при использовании Cygwin www.cygwin.com получается очень даже ничего.

Павел

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

Interbase полностью совместим со стандартом ANSI SQL-92, а также имеет свое собственное расширение SQL для хранимых процедур и тригеров. В сравнении с другими СУБД Interbase представляет очень эффективный механизм триггеров. Многие функции существующих СУБД были впервые реализованы в Interbase. Interbase 6.0, FireBird, Yaffil являются Open Source-продуктами, которые можно использовать бесплатно. www.ibase.ru

zhmogin

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

dimss

MSDE (обрезанный MSSQL) — бесплатный.

kdim

Вопрос

У меня такая проблема. Программа работает с базой данных Access. Путь к ней и драйвер (Microsoft Access Driver (*.mdb)) прописывается в ODBC при инсталяции. Но на некоторых машинах почему-то возникает ошибка при соединении с базой данный. Не видит программа базу. Т.е. на одном компе все нормально, на другом компе — нет соединения с базой. ADOConnection не может соединиться. Ошибка возникала под 98 виндой.

Ответ

По всей видимости не хватает установки Microsoft Data Components. Попробуй включить в дистрибутив mdac_typ.exe(есть в дистрибутиве или инсталяторах офиса)

Из конференции Expert_FAQ

Вопрос

У меня есть :
1. сервер Win2k Advanced Srv + MSSQL2k
2. некоторое количество клиентов под Win2k
3. некоторое количество клиентов под Win98se

Проблема: Не могу настроить ODBC на win98-машинах

Пытался: явно указывать порт вместо dynamic, ставить последнюю версию MDAC, указывать на сервере различные способы аутентификации, заходить под учетной записью sa, и еще много всякой чепухи; результат один:

«Server does not exist or access denied»

или в одном определенном случае

«SQL Server not found»

На всякий случай: sqlserver утверждает, что его зовут <PC_NAME>\<ANYNAME>. Впервые вижу такое дробление слэшем.

Ответ

У меня так же зовут SQL Server. Посмотрите на
http://www.connectionstrings.com
строку соединения… Там есть разные варианты.

Из конференции Expert_FAQ

Вопрос

Что такое CDDB?

Ответ

Это база данных по Audio CD. Заноситься ID диска, название, исполнитель, названия треков. Многие программы умеют использовать CDDB для получения информации о вставленном в CD-ROM диске.

Из конференции Expert_FAQ

Вопрос

Что такое базы данных?

Ответ

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

Одна запись это набор горизонтальных ячеек разных полей.

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

Реляционные базы данных — это совокупность таблиц, между которыми существует связь по отдельным полям (запись с значением в поле nomer =1 таблицы A соответствует одной записи (или многим) таблицы B, в поле nomer которой тоже находится 1).

Сейчас базой данных называют совокупность таблиц находящимся в одном файле или отдельно.

BOPOHA



Copyright © 2000-2004 Сообщество Чайников
Контактная информация