Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С чего начать изучение SQL

18K
14 декабря 2010 года
imAlex
179 / / 29.07.2010
Доброе время суток.
Я хочу научиться создавать и работать с базами, но вот не задачка: "С чего начать?". Подскажите что проще в освоении MS SQL или MSQL. Может кто знает умные статьи для чайников?
У меня есть программа, написанная мной на С. Она по сути отслеживает приход/уход сотрудников, если пользователь ничего не делает в течении n-ного кол. времени то фиксирует и это. Сейчас прога создает текстовый файл, дальше средствами JS и php я это обрабатываю и вывожу на сайт. Хотелось бы все это в базу. Соответственно какая база лучше?
Страницы:
8
14 декабря 2010 года
mfender
3.5K / / 15.06.2005
MySQL - бесплатная и условно платформозависимая. MSSQL - большая, тяжёлая, работает на Windows и стоит немалых денег. Выбирай )))))

С другой стороны, MSSQL более продвинута в возможностях. Впрочем, навряд ли они тебе эти продвинутости понадобятся в ближайшие пять лет.

Хранимые процедуры и функции так же работают и в MySQL.

Вобщем, MySQL однозначно. По секрету: Google весь работает на MySQL. Правда, на очень дорогой версии - BigTable ))))

А почитать надо начать с теории баз данных, без привязки к конкретной БД. Для пробы пера и ознакомления со многими вещами рекомендую читать на MySQL.ru
18K
14 декабря 2010 года
imAlex
179 / / 29.07.2010
Спасибо за ответ.
Я имею примерное представление о базах данных. Работал в аксесе немного. Но вот я никак не могу понять, как создать базу, как к ней подключиться. У меня стоит Microsoft SQL Server, MySQL. Из инструментов есть MS studio expres, MS Visual Studio 2010. Но мне никак ее не потрогать. Может сталкивались со статьями, описывающими первые шаги в картинках.
Например есть статья по MFC:http://appdeveloper.narod.ru/firststep/firststep.htm
ченить подобное бы про SQL.
7.3K
14 декабря 2010 года
shureg
67 / / 29.05.2010
Цитата: imAlex
Спасибо за ответ.
Я имею примерное представление о базах данных. Работал в аксесе немного. Но вот я никак не могу понять, как создать базу, как к ней подключиться. У меня стоит Microsoft SQL Server, MySQL. Из инструментов есть MS studio expres, MS Visual Studio 2010. Но мне никак ее не потрогать. Может сталкивались со статьями, описывающими первые шаги в картинках.
Например есть статья по MFC:http://appdeveloper.narod.ru/firststep/firststep.htm
ченить подобное бы про SQL.



для mysql еще нужно (помойму) установить apache + php + phpmyadmin
с MSsql ксожелению неработал вообще

18K
14 декабря 2010 года
imAlex
179 / / 29.07.2010
Цитата: shureg
для mysql еще нужно (помойму) установить apache + php + phpmyadmin
с MSsql ксожелению неработал вообще


Ну естественно! У мня стоит denver

244
14 декабря 2010 года
UAS
2.0K / / 19.07.2006
Цитата: shureg
для mysql еще нужно (помойму) установить apache + php + phpmyadmin


Ниче не надо из этого ставить, чтобы MySQL работал. MySQL работает сам по себе, апач на него не влияет, как и пхп. MySQL лишь используется в скриптах php, но сама СУБД может работать сама по себе прекрасно.

7.3K
14 декабря 2010 года
shureg
67 / / 29.05.2010
Цитата: UAS
Ниче не надо из этого ставить, чтобы MySQL работал. MySQL работает сам по себе, апач на него не влияет, как и пхп. MySQL лишь используется в скриптах php, но сама СУБД может работать сама по себе прекрасно.



ну в таком случаее её только из под командной строки запустить можно :D


Цитата: imAlex
Ну естественно! У мня стоит denver



ну тогда заходите на http://localhost (незабываем включить сам Денвер)
ищите там ссылку - заведение новых пользователей БД (или чтото вроде этого) - создаете там новую базу, пользователя и пароль.

далее тамже (http://localhost) ищите phpmyadmin , кликайте по нему и в списке выбирайте вашу бд =) - очень легко учиться прям в phpmyadmin - там на каждое действие пишется sql код, который был сделан чтобы его выполнить....

но первым делом - если совсем нет понятий с sql - попробуй через вэбинтерфейс ПМА (phpmyadmin) выполнять задачи - для начала создай новую таблицу -
придумайте название (латинскими буквами) и количество ячеек в ней.
Нажмите добавить и перед вами появится след окно - там выберите типа ячееек что хотите создать и тп....
У каждого типа свои особенности и предназначения - чтобы все понять нужно почитать про это =)))))
Самые частоиспользуемые (мною) - int (целые цифровые) и varchar (любой текст) - поигравшись создавайте....

обратите внимание там еще и отобразился SQL код, который потребовалось выполнить....

244
14 декабря 2010 года
UAS
2.0K / / 19.07.2006
Ну дык а что плохого в командной строке? Очень даже удобно)
Просто кроме phpmyadmin есть и другие альтернативные GUI интерфейсы к данной СУБД.
7.3K
14 декабря 2010 года
shureg
67 / / 29.05.2010
Цитата: UAS
Ну дык а что плохого в командной строке? Очень даже удобно)
Просто кроме phpmyadmin есть и другие альтернативные GUI интерфейсы к данной СУБД.



просто я глубоко сомниваюсь, что ТС она (бд) нужна для этого, в 95% именно нужен апач, пхп, пма ну или всякие гавносборки проекты типа денвера

8
14 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата: shureg
просто я глубоко сомниваюсь, что ТС она (бд) нужна для этого, в 95% именно нужен апач, пхп, пма ну или всякие гавносборки проекты типа денвера


при чём тут это? сама СУБД может использоваться для чего угодно. если мне не хочется покупать MSSQL или Oracle для работы крохотной фирмы, которая их просто не потянет, то я поставлю на Win бесплатную MySQL и буду через ADO и ODBC с нею общаться своими клиентскими приложениями. Вот сейчас я одному человеку помогаю с небольшой CRM. Пишу на Delphi. БД MySQL лежит на удалённом хосте. Дёшево и шустро. Во-первых, не нужен человек, называемый "администратор базы данных". Это уже минус 30К рублей. Во-вторых, денег на хостинг сами знаете сколько нужно, и сам хостёр всё бэкапит и восстанавливает при случае. Красота! А теперь представь, сколько это должно стоить при условии MSSQL даже если бы её предоставлял тот же хостёр. Мой опыт работы с этим микростуффовым монстром говорит мне, что там нужно очень много мозгов, терпения и бабла, чтобы обслуживать его.

8
14 декабря 2010 года
mfender
3.5K / / 15.06.2005
Когда-то давно работал в одной относительно большой компании инженером IT. И была у нас шальная мысль все серванты (а там чуть не каждый занимал отдельный гробик: контроллер домена, MSSQL, MSExchange, отдельный шлюз наружу, большущее хранилище данных для переносимых профилей, ещё чего-то не помню уже чего - вобщем восемь компутеров на один домен, а в сети всего около 250 рабочих мест) развернуть на Linux. До реализации эта мысль так и не дошла, причём по бОльшей части из-за многочисленных баз данных, крутящихся на MSSQL. Хотя было найдено какое-то решение по переносу этого добра на Postgre, но вот как-то всё упёрлось в обычное "лень". )))
5
15 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: mfender
...

Не верю :D Линупс такое не потянет. Вы бы охренели OpenDirectory настраивать а потом еще и софт использующий MSSQL переписывать.

8
15 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата: hardcase
Не верю :D Линупс такое не потянет. Вы бы охренели OpenDirectory настраивать а потом еще и софт использующий MSSQL переписывать.


Ну почему не бывает. А вот про «охренели бы» - верно. Потому и не срослось :D

Кстати, а зачем софт переписывать? Он просто использует данные через ADO, и там без разницы какая база, только ODBC-драйвер соответствующий надо поставить.

5
15 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: mfender
Кстати, а зачем софт переписывать? Он просто использует данные через ADO, и там без разницы какая база, только ODBC-драйвер соответствующий надо поставить.


Как раньше - не знаю, а сейчас нормальный софт использующий MSSQL пишется на .NET. Теперь покажи мне как через ADO.NET банально установить значение таймаута подключения примитиву DbConnection-а. А что уж говорить о всякой тяжкой логике которая живет в хранимках. А если там гдето XML начинает ходить в базу и из нее... Вся эта кросс-СУБДшность - в реальности совершенно виртуальна и работает лишь на проектах уровня NerdDinner.

8
15 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата: hardcase
Как раньше - не знаю, а сейчас нормальный софт использующий MSSQL пишется на .NET. Теперь покажи мне как через ADO.NET банально установить значение таймаута подключения примитиву DbConnection-а. А что уж говорить о всякой тяжкой логике которая живет в хранимках. А если там гдето XML начинает ходить в базу и из нее... Вся эта кросс-СУБДшность - в реальности совершенно виртуальна и работает лишь на проектах уровня NerdDinner.


Ну да, как-то так и есть всё. Хотя хранимые процедуры и триггеры переписать можно. А вот что такое ADO.NET я не знаю, но догадываюсь, что выхлоп у неё ровно такой же как и у классического ADO, коим я пользуюсь.

P.S. А раньше-то, дурак, для связи с MySQL юзал Zeos. Впрочем, тогда ещё не придумали как с MySQL через ADO контактировать, и вообще ODBC для MySQL был в зачаточном состоянии.

385
15 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
mfender,
ну и ерунды вы тут понаписали! диву даешься..

во первых ничего тяжелого или сложного в ms sql нет - какой у вас объективный критерий "тяжелости" и "сложности"?
про цену - вы в курсе что есть разные редакции? в том числе бесплатные (для нужд разработчика или своего небольшого сайта - возможностей хватит с головой, особенно в последних версиях, так что о платных и не задумаешься), если брать платные то есть очень дешевые, порядка 40 долларов?
То, о чем вы говорите, всякие enterprize и datawarehouse и т.д. конечно стоят других денег, но и задачи решают другие, с которыми бесплатная версия мускуля вряд ли справится.
Так что если не в курсе насчет редакций - смените стереотипы и будьте в курсе, либо хотя бы держите их при себе чтобы не вводить людей в заблуждение.

Далее, про "администратора бд" - вообще красивый пассаж. То что вам не приходилось иметь дело с БД размер, надежность и нагрузка на которые таковы, что они не нуждаются в администрировании - не значит что БД вообще не нужно администрировать. Кстати, что насчет бэкапов и обеспечения бесперебойности, мускуль такое умеет наверняка - а ведь это тоже административные задачи!
Так, что для приложений уровня "небольших CRM", небольших сайтов или интернет магазинов, настольных приложений и т.п. - и для mssql все ваше "администрирование" - сведется к установке субд.
Что касается хостеров - вы когда последний раз хостинг покупали? Любая приличная хостинг компания, при выборе тарифного плана, дает на выбор mysql или ms sql, примерно в одинаковых конфигурациях. при чем заметьте отдельно доплачивать за mssql - никто не требует!
И еще на правах совета, лучше писать про то, с чем работали, чтобы не сесть в лужу.

Для ТС:
Имхо, тут - дело вкуса.
Люди работающие в связке: nix, apache, php, mysql - ввыбирают соотв.но mysql.
Люди работающие: win, iis, .net, ms sql - соотв. mssql.
Выбирайте что милее и вперед.
Мне доводилось поработать и с mysql (не долго) и с ms sql. Скажу что мне как-то больше понравился ms sql. Но повторяю, это мое субъективное мнение, т.к. у меня нет достаточного опыта в mySql чтобы проводить вдумчивое сравнение и делать однозначные выводы.
В сети есть много анализов и сравнений, много копий сломано, что лучше - это тема для холивара. Так что поищите, почитайте.
Но на начальном этапе - это только дело вкуса. Перейти потом - нет проблем! У каждого есть свои заморочки (взять хотя бы груп бай в мускуле), или...да много всего неочевидного и в mssql, что скрывать. Но пока не начнешь плотно работать с продуктом - не наткнешься, так что для обучения - все равно.
Просто выбирайте платформу: win или nix - и вперед.

п.с.
Главное не начинайте с акцесса =)
8
15 декабря 2010 года
mfender
3.5K / / 15.06.2005
я никого не ввожу в заблуждение, а сравниваю MSSQL (даже бесплатный Express) c MySQL, который вообще ни за какие деньги не продаётся.
Цитата:
Что касается хостеров - вы когда последний раз хостинг покупали? Любая приличная хостинг компания, при выборе тарифного плана, дает на выбор mysql или ms sql, примерно в одинаковых конфигурациях. при чем заметьте отдельно доплачивать за mssql - никто не требует!

покупал чертовски давно. В 2004-м году, кажется, и до сих пор там остаюсь. Уже и владельцы вместе с названием трижды сменились, а я всё там же, за все годы дважды обратившись в техподдержку.

Насчёт "доплачивать никто не требует" - весьма спорно. Win-хостинг - вещь неприлично дорогая. И эти приличные хостинг-компании почему-то ограничивают размер БД в мегабайтах (мой хостёр ограничивает только размер общего дискового пространства, да и то условно: при переполнении оно "резинит" и какие-то копейки начинают дополнительные списываться). У меня программа может быть 10кб, а все остальные 10Гб занимать БД. У тех кого вы приличными зовёте, чётко написано, к примеру: "FTP 3000Мб, MSSQL 500Мб". И всё это чудо за ~600 RUR в месяц (!) Только вот нахрена мне 3 гектара для SOAP-сервиса, который весит 100Кб и всего полгектара для БД, которая у меня переваливает за 20Гб - не понимаю. Да ещё за такие деньги, которые я своему неприличному хостёру, к которому у меня за шесть лет не возникло претензий, плачу за полгода.

Цитата:
Главное не начинайте с кацесса =)


это точно :D

385
15 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
[QUOTE=mfender]я никого не ввожу в заблуждение, а сравниваю MSSQL (даже бесплатный Express) c MySQL, который вообще ни за какие деньги не продаётся.
[/QUOTE]
Знаете есть такой принцип в agile, Принцип "малых шагов".
Прежде чем приобретеать какую-либо дорогую версию ПО, следует скачать бесплатную и пользоваться ей до тех пор, пока бесплатная версия не станет "тесновата". Тогда переход на платную будет более обоснован.
Попробуйте ради интереса, установите экспресс, если вы думаете что это "урезанная недоверсия", в которой можно выполнить только select *, вы сильно ошибаетесь. Ограничения там в основном касаются кол-ва процессоров, памяти, размера БД, всяких мулек типа секционирвоания и т.д. т.е. в основном масштабирвоания, обеспечения высоконагруженных систем.
Я не знаю как еще это назвать, как не ввод в заблуждение, человека, который спрашивает совета, а красной нитью вашей речи проходит такая мысль: "мс скуэль монструозное дорогое чудище которое нужно бесконца поддерживать за бешеные деньги" а мускуль "легкая и воздушная субд, простая в настройке, бесплатная, не нуждающаяся в администрировании". Эти мысли мне кажутся не совсем корректными, по этому я призываю вас, просто быть более объективным.

[QUOTE=mfender]
покупал чертовски давно. В 2004-м году, кажется, и до сих пор там остаюсь. Уже и владельцы вместе с названием трижды сменились, а я всё там же, за все годы дважды обратившись в техподдержку.

Насчёт "доплачивать никто не требует" - весьма спорно. Win-хостинг - вещь неприлично дорогая. И эти приличные хостинг-компании почему-то ограничивают размер БД в мегабайтах (мой хостёр ограничивает только размер общего дискового пространства, да и то условно: при переполнении оно "резинит" и какие-то копейки начинают дополнительные списываться). У меня программа может быть 10кб, а все остальные 10Гб занимать БД. У тех кого вы приличными зовёте, чётко написано, к примеру: "FTP 3000Мб, MSSQL 500Мб". И всё это чудо за ~600 RUR в месяц (!) Только вот нахрена мне 3 гектара для SOAP-сервера, который весит 100Кб и всего полгектара для БД, которая у меня переваливает за 20Гб - не понимаю. Да ещё за такие деньги, которые я своему неприличному хостёру, к которому у меня за шесть лет не возникло претензий, плачу за полгода.[/QUOTE]
Я не являюсь экспертом по хостингу, но почему-то уверен, что если поискать, то вы найдете и вин-хостинг за приемлемые деньги. Что касается "приличности" и цены хостинг-компаний, то это выбор сугубо каждого.
Вот можно например купить плеер ммм..какой-нибудь китайской ХуньЧаоМао, а можно японский Сони, цена будет отличаться значительно. И при этом китаец, может даже будет лучше и проработает дольше Сони, никто не спорит и не называет его плохим, но чисто психологически....короче в подобной ситуации один бы выбрал китайца, а я лично выбрал бы сони. Тем более, что цена вопроса - ну смешная.
8
15 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата:
Попробуйте ради интереса, установите экспресс, если вы думаете что это "урезанная недоверсия", в которой можно выполнить только select *, вы сильно ошибаетесь.


Спасибо, что ткнули меня носом в мои заблуждения. То-то у меня дома стоит Express, на котором я всё и делаю, что с MSSQL связано, но вот, чёрт возьми даже не подозревал, что на ней можно что-то больше select'а исполнить :D

5
15 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: mfender
Спасибо, что ткнули меня носом в мои заблуждения. То-то у меня дома стоит Express, на котором я всё и делаю, что с MSSQL связано, но вот, чёрт возьми даже не подозревал, что на ней можно что-то больше select'а исполнить :D


На самом деле там ограничения существенные (MSSQL 2008): БД не более 4ГБ, 1ГБ на использование физической памяти, 1 физический процессор (планировщик будет использовать ядра только на одном процессоре). Отключен встроенный шедулер (не так страшно - можно заменить на виндовый + sqlcmd), зато есть полнотекстовый поиск.

1
15 декабря 2010 года
kot_
7.3K / / 20.01.2000
чтото у вас тема не туда ушла.
Для задач ТС в заявленом объеме MySQL хватает с головой.
385
15 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: hardcase
На самом деле там ограничения существенные (MSSQL 2008): БД не более 4ГБ, 1ГБ на использование физической памяти, 1 физический процессор (планировщик будет использовать ядра только на одном процессоре). Отключен встроенный шедулер (не так страшно - можно заменить на виндовый + sqlcmd), зато есть полнотекстовый поиск.


Существенные по сравнению с другими редакциями - это конечно. Но существенные для начинающих и небольших проектов - нет. А вот насколько он уступает или выигрывает у mysql можете выяснить. Замеры, тесты, нагрузочные тесты, потом с удовольствем почитаю о результатах.=) Хотя я подозреваю уже кто-то сравнивал, погуглить надо.
И кстати БД, не 4ГБ, а 10Гб...

вот здесь можете подробнее посмотреть[QUOTE=mfender]То-то у меня дома стоит Express, на котором я всё и делаю, что с MSSQL связано, но вот, чёрт возьми даже не подозревал, что на ней можно что-то больше select'а исполнить[/QUOTE]Ну и зачем так огульно рассуждать тогда, тем более новичков стращать =)

Вообще использующим в качестве аргумента "он бесплатный". Счас поискал ради интереса, вот результаты, за что купил за то продаю

Цитата:
Сейчас юридическая сторона следующая. MySQL существует в двух редакциях с разными лицензиями.
1. MySQL Community - лицензирована под GPL. Распространяется бесплатно, код открыт.
2. MySQL Enterprise - лицензирована под коммерческой лицензией. Распространяется вместе с пакетами поддержки различного уровня. Исходный код доступен.

По сути, обе редакции MySQL основаны на одних и тех же исходных кодах. MySQL Enterprise - сертифицированные и протестированные бинарники + поддержка + дополнительные утилиты (дополнительные коннекторы, Advisory tools) + доступ к базе знаний MySQL.

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

Если Вы захотите дополнительные возможности поддержки, утилиты и др, тогда Вам следует приобрести один из планов поддержки MySQL Enterprise (пишите, если этот вариант Вас интересует). Такое приобретение даст Вам дополнительные возможности (включая, например, Hot bug fix - быстрое испроавление багов разработчиками MySQL), но как я понимаю не является обязательным для коммерческого использования MySQL в Вашей организации. Обязательно приобретение лицензии в нескольких случаях, наиболее распространенный из которых - включение MySQL в состав Вашего продукта, который Вы продаете (не по лицензии GPL). В таком случае Вы вместе с продуктом продаете и MySQL, являющуюся его частью и лицензия обязательна.


взято отсюда

а вот цены на редакции

Цитата:

/1-4 Socket Server /Year
MySQL Standard Edition USD 2,000
MySQL Enterprise Edition USD 5,000
MySQL Cluster Carrier Grade Edition USD 10,000


взято отсюда

Так что тоже не все так просто.

385
15 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: kot_
чтото у вас тема не туда ушла.
Для задач ТС в заявленом объеме MySQL хватает с головой.

Угу. Ушла, ну холивара мы не допустим, но объективность быть должна =)

18K
16 декабря 2010 года
imAlex
179 / / 29.07.2010
Огромное спасибо ответившим.
Shureg-спасибо за подробное объяснение принципа первых шагов. Попробую и отпишусь что получилось.
SomewherSomehow-спасибо за разъяснения и субъективность.
На основе выше изложенного я решил начать с MySQL.
Есть еще один вытекающий вопрос: С++ c MySQL работает. На основе прочитанного материала, SQL и в Африке SQL, а остальное ну что ль оболочки)), если так можно выразиться.
Как оно работает, меня пока не интересует. Этот вопрос в планах.
385
16 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Только я боролся не за "субъективность" а за "объективность" =)))

Да, конечно работает, правда что вы под этим подразумеваете, клиент? Клиент может быть написан на чем угодно, хоть на с++, хоть на бэйсике. Изучайте ado, odbc и прочтие стандарты работы с бд. Возможно у mysql есть и какой-то свой нативный протокол и клиентские компоненты. Я в свое время взаимодействовал клиентом написанном на с++ builder 6.0 с mysql при помощи odbc, если мне не изменяет память, было это году в 2004-2005...может какие новые способы появились с тех пор.
8
17 декабря 2010 года
mfender
3.5K / / 15.06.2005
2SomewherSomehow: вот вы сами изволите человека вводить в заблуждения пространными словами. При этом мешаете в одну кучу ADO и ODBC, почему-то называя эту беду "стандартами". А ещё меня обвинять изволили в запудривании мозгов )))))) Вам же прекрасно известно, что ADO - это только технология обмена данных между базой данных и какой-то программой, а ODBC - суть драйвер, обеспечивающий это сообщение.
385
24 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: mfender
2SomewherSomehow: вот вы сами изволите человека вводить в заблуждения пространными словами. При этом мешаете в одну кучу ADO и ODBC, почему-то называя эту беду "стандартами". А ещё меня обвинять изволили в запудривании мозгов )))))) Вам же прекрасно известно, что ADO - это только технология обмена данных между базой данных и какой-то программой, а ODBC - суть драйвер, обеспечивающий это сообщение.


Т.е. вы говорите что ado - технология, а odbc - дескать драйвер, да еще и обеспечивающий это сообщение???

Вы бы хоть не поленились элементарно посмотреть в википедии, прежде чем говорить ерунду (простите уж за прямоту). ODBC - именно что стандарт. В соответсвии с ним (с этой спцификацией), разработчики субд писали драйверы для доступа к своим СУБД (термин стандарт вам надеюсь знаком?). Это стандарт, а не драйвер! Драйвер разрабатывается в соответсвии с этим стандартом.
вот извольте

Цитата:

ODBC (англ. Open Database Connectivity) — это программный интерфейс (API) доступа к базам данных, разработанный фирмой Microsoft, в сотрудничестве с Simba Technologies на основе спецификаций Call Level Interface (CLI), который разрабатывался(англ.) организациями SQL Access Group, X/Open и Microsoft. Впоследствии CLI был стандартизован ISO ISO/IEC 9075-3:2003.(англ.) Стандарт CLI призван унифицировать программное взаимодействие с СУБД, сделать его независимым от поставщика СУБД и программно-аппаратной платформы.
....
Это достигается благодаря тому, что поставщики различных баз данных создают драйверы, реализующие конкретное наполнение стандартных функций из ODBC API с учётом особенностей их продукта.


Именно об этом я говорил, когда упоминал про то что мне пришлось качать такой драйвер с сайта mysql.com, для работы с этой субд посредством odbc.
Теперь ado.
Просто цитирую

Цитата:

ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access, MS SQL Server) и основанный на технологии компонентов ActiveX. ADO позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде.


Я что-то не вижу в этом определении ни слова про драйверы odbc...и вообще ни одного упоминания, что логично в общем-то ибо это разные вещи.
Скорее уж стоило бы вспомнить ole db, которая худо бедно, но может быть сравнима с ado т.к. первая основана на com, вторая на activex.

имхо,
уважаемый, подучите (или повторите) мат.часть, а то такие перлы лезут.
п.с.
извиняюсь за поздниый ответ - был в отъезде.

8
24 декабря 2010 года
mfender
3.5K / / 15.06.2005
я конечно косноязычный, но не тупоумный. драйвер для ODBC. так понятней? или будем искать ещё пропущенные запятые в моих постах?
385
24 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Никаких пропущенных запятых, написали уж про драйвер, чего теперь.
А что у нас со стандартами, до сих пор не признаете что odbc это стандарт?
ADO конечно не стандарт в чистом виде, по крайней мере я не слышал чтобы его приняли таковым, но я в своем посте объединил суть набор широкоподдерживаемых программных интерфейсов, для работы с которыми создана туча программных компонент - термином "стандарт". Надеюсь теперь вопрос понятен или будем продоолжать выискивать скрытый смысл в моих постах?
18K
27 декабря 2010 года
imAlex
179 / / 29.07.2010
SomewherSomehow, я поигрался с mysql, вот создал таблицы. Первая-дата, вторая-юзер, третья-имя ПК, четвертая/пятая-время прихода/ухода. Последние имеют столбцы:id, id_юзера, id_ПК, id_дата, время прихода, время ухода. Соответственно эта таблица будет объединять остальные, то-есть юзер с id=1 на ПК с id=2 в id=1(дата) пришел в "x"-часов ушел в "y"-часов.
У меня возник вопрос, какой объем держит таблица (так чтоб быстро работала)? По моим подсчетам у меня в день добавляется около 20 строк в последней таблице. Хочется чтоб, ну скажет, годик все это хранилось. Запросы к этой таблице будут сл.: ищем совпадения по требуемым "id_...", выводим время прихода, время ухода.
И еще один момент, не уверен что по адресу, но моя прога в течении дня, с 20-ти машин будет обращаться к разным частям базы. Есть вероятность, что будет уместно одновременное обращение к одной ячейке (чтение). Собственно вопрос в том, mysql позволяет делать одновременно записи и чтение многих пользователей с одной парой логин/пароль, или необходимо создавать на каждый ПК свою пару?

PS: Быть может моя логика страдает. Если у кого есть идеи как лучше организовать таблицы и связь между ними, буду рад почитать, ибо я так понял опыта в данных вопросах у всех здесь больше, чем у меня.
244
27 декабря 2010 года
UAS
2.0K / / 19.07.2006
Вы таблицу нормально опишите (запросами или схему визуальную представьте), ибо из этого описания мало чего понятно.
MySQL в принципе не повесится. Даже миллион записей в таблице не является чем-то объемным и сложным для обработки. Все, в первую очередь, зависит от планировки БД + верной расстановки индексов.
Пользователей лишних можете не создавать, проблем не будет.
385
28 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: imAlex
SomewherSomehow, я поигрался с mysql, вот создал таблицы. Первая-дата, вторая-юзер, третья-имя ПК, четвертая/пятая-время прихода/ухода. Последние имеют столбцы:id, id_юзера, id_ПК, id_дата, время прихода, время ухода. Соответственно эта таблица будет объединять остальные, то-есть юзер с id=1 на ПК с id=2 в id=1(дата) пришел в "x"-часов ушел в "y"-часов.
У меня возник вопрос, какой объем держит таблица (так чтоб быстро работала)? По моим подсчетам у меня в день добавляется около 20 строк в последней таблице. Хочется чтоб, ну скажет, годик все это хранилось. Запросы к этой таблице будут сл.: ищем совпадения по требуемым "id_...", выводим время прихода, время ухода.
И еще один момент, не уверен что по адресу, но моя прога в течении дня, с 20-ти машин будет обращаться к разным частям базы. Есть вероятность, что будет уместно одновременное обращение к одной ячейке (чтение). Собственно вопрос в том, mysql позволяет делать одновременно записи и чтение многих пользователей с одной парой логин/пароль, или необходимо создавать на каждый ПК свою пару?

PS: Быть может моя логика страдает. Если у кого есть идеи как лучше организовать таблицы и связь между ними, буду рад почитать, ибо я так понял опыта в данных вопросах у всех здесь больше, чем у меня.


Т.е. у вас будут таблицы:
справочник ПК, справочник пользователей, справочник дат и таблица содержащая факты прихода и ухода со ссылками на справочники? Впринципе нормальная структура, только я не понял, зачем даты заводить в отдельной таблице...почему просто в таблице фактов не сделать поле с типом дата.

Касательно объемов, как правильно заметил UAS, это смешные объемы, так что не переживайте.

Что касается пользователей и блокировок - не знаю, к сожалению, как это устроено в MySQL. В MSSQL посоветовал бы вам посмотреть в сторону блокировок, уровней изоляции, и т.д. может быть и тут похожий механизм, но точно - хз.

18K
28 декабря 2010 года
imAlex
179 / / 29.07.2010
Цитата: SomewherSomehow
Т.е. у вас будут таблицы:
справочник ПК, справочник пользователей, справочник дат и таблица содержащая факты прихода и ухода со ссылками на справочники?


Совершенно верно.

Цитата: SomewherSomehow
Впринципе нормальная структура, только я не понял, зачем даты заводить в отдельной таблице...почему просто в таблице фактов не сделать поле с типом дата.


Логично. Попробую так. А есть способы связать эти справочники с таблицей фактов на уровне SQL? Или это лишено смысла и это лучше делать при добавлении значений в таблицу? Т.е. например пользователь с логином administrator, на ПК-1, 28.12.2010 пришел в 13-00, ушел в 14-00. Тогда ищем в справочнике id пользователя и ПК: administrtor-id=1, ПК-1-id=1. В таблицу фактов пишем:


ID| User_id | PC_id | ___date___ | time_in | time_out
--+---------+--------+--------------+----------+----------
# | 1_____ | __1__ | 28.12.2010 | _13-00_ | 14-00

По поводу поля с типом "дата", я так понимаю, туда только дату можно пихать. Это хорошо, но вот как SQL понимает, что это дата, а не число?
Может есть тип "время", мне бы он пригодился? ))

385
28 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
[QUOTE=imAlex]Логично. Попробую так. А есть способы связать эти справочники с таблицей фактов на уровне SQL? Или это лишено смысла и это лучше делать при добавлении значений в таблицу? Т.е. например пользователь с логином administrator, на ПК-1, 28.12.2010 пришел в 13-00, ушел в 14-00. Тогда ищем в справочнике id пользователя и ПК: administrtor-id=1, ПК-1-id=1.[/QUOTE]Связать можно по ключу Primary Key Foreign Key. Такая связь вам обеспечит ссылочную целостность. Т.е. например, в таблице фактов не будет ссылок на ид пользователей которые были удалены или еще не добавлены. Что касается всего остального - это ищите в документации вашей субд (в сиквел сервере например есть каскадное удаление, удаляете из справочника - автоматически удаляются или заменяются на нулл значение в таблице фактов). Что касается "автоматически подставляет" - такого боюсь нет, но это не страшно, напишите хранимую процедуру, внутри которой реализуете всю вашу логику. Либо двумя запросами с клиента. Но хп - лучше, имхо.
[QUOTE=imAlex]
По поводу поля с типом "дата", я так понимаю, туда только дату можно пихать. Это хорошо, но вот как SQL понимает, что это дата, а не число?[/QUOTE]
Не факт. Опять же обратитесь к документации, либо может кто из работающих с мускулем на форуме напишет. Скорее всего можно и дату и время. А понимает - вы же задаете тип поля при создании таблицы, вот он и понимает =)
[QUOTE=imAlex]Может есть тип "время", мне бы он пригодился? ))[/QUOTE]
Есть такой в новой версии сиквел-сервера опять же. Есть отдельно тип дата, без времени, тип время без даты и тип дата время с разной точностью - богатый выбор. поройтесь в хелпах к мускулю, авось и там есть!
244
28 декабря 2010 года
UAS
2.0K / / 19.07.2006
В MySQL есть типы TIME, DATE и DATETIME, которые собственно предназначены для хранения соответствующих данных.
По поводу ссылочной целостности - у MySQL с этим проблемы. Поддерживаться стали только с 5ой версии и только для таблиц на движке InnoDB. Да и работает механизм ссылочной целостности, мягко говоря "не очень". Поэтому параллельно с БД ссылочную целостность допиливаю скриптами.
18K
28 декабря 2010 года
imAlex
179 / / 29.07.2010
Огромное спасибо. Сейчас я пробую с C++ создавать записи. Связь программы и базы я уже установил, пробую посылать запросы.
Кстати, мне пришлось поставить mysql-essential-5.1.54-win32.msi, для того, чтоб библиотеки установились, но при установке я ввел пароль (123456), теперь по адресу http://localhost/Tools/phpMyAdmin/ меня не пускает
Цитата:
#1045 - Access denied for user 'root'@'localhost' (using password: NO)

.
Как туда попасть? логин root, пароль 123456. С C++ пишу

Цитата:
mysql_real_connect(conn, "localhost", "root", "123456", "mysql", 0, NULL, 0)


а с браузера как?

8
29 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата: SomewherSomehow
Никаких пропущенных запятых, написали уж про драйвер, чего теперь.
А что у нас со стандартами, до сих пор не признаете что odbc это стандарт?
ADO конечно не стандарт в чистом виде, по крайней мере я не слышал чтобы его приняли таковым, но я в своем посте объединил суть набор широкоподдерживаемых программных интерфейсов, для работы с которыми создана туча программных компонент - термином "стандарт". Надеюсь теперь вопрос понятен или будем продоолжать выискивать скрытый смысл в моих постах?


Это вы изволите искать скрытый смысл в моих постах и придираться к словам, пользуясь непонятной для меня терминологией. Мне не ведомо, что подразумевается под словом «стандарт». Мне известно что есть протокол, технология, мысль и драйвер для физического осуществления протокола в технологии, которая является мыслью. я консерваториев не заканчивал, поэтому оперирую словами известными мне, может быть не совсем понятными окружающим. Но, чёрт возьми, только не убеждайте меня, что ODBC - это какая-то технология передачи данных. ODBC - средство сообщения драйвера со своей базой данных, максимально усреднённое для различных баз.

385
29 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Ни в чем убеждать не собираюсь, хотите так думать - наздоровье. А мне ближе и понятнее то, что написано в википедии.
Простым языком выражаясь, собрались мужики надосуге, пообсуждали и решили, что для работы с БД необходим такой-то набор функций, с такими-то названиями, параметрами, типами и т.д. Записали все эти функции на бумажке, коию нарекли спецификацией. И договорились, что теперь все будут разрабатывать свои программные интерфейсы по этой бамажке. И дабы ее как-то называть дали ей имя ODBC. Теперь когда компания разработчик субд хочет чтобы с ее продуктом работали посредством odbc, она берет эту бумажку, внимательно изучает и по ней пишет свой собственный драйвер, который с одной стороны, скрывает детали работы специфичные для бд, с другой - несет в массы вполне себе стандартный набор открытых функций.[QUOTE=mfender]ODBC - средство сообщения драйвера со своей базой данных[/quote]а что вот это такое - понятия не имею, и как оно физически выглядит - не представляю.
8
29 декабря 2010 года
mfender
3.5K / / 15.06.2005
Цитата: SomewherSomehow
а что вот это такое - понятия не имею, и как оно физически выглядит - не представляю.


такая ж ерунда, как pdo. Вся "универсальность" ODBC актуальна только для таблиц, но никак не для SQL. SQL-код всё равно приходится писать индивидуально для потребностей той или иной СУБД. Сочиняя единообразие для всех двадцать лет назад, они не подумали, что разработчикам проще будет оперировать именно SQL'ем, а не общаться на низком уровне с базами. Вобщем, деньги на разработку ODBC были просто выкинуты на ветер.

385
29 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Диалекты Sql отличаются само собой, я ничего и не говорил про это...
На тему полезности одбц, вот допустим вы пишете клиента на builder c++, или на .net а бд у вас на мускуле. Сформировали вы на клиенте запрос, само собой в синтаксисе мускуля, но вам же надо как-то его отдать серверу и получить результаты... как будете действовать?
385
29 декабря 2010 года
SomewherSomehow
477 / / 25.07.2004
Или вот например тоже из личного опыта. Есть такая замечательная бух.система "галактика" (не к ночи будет помянута). Крутится она у нас на таком замечательном сервере как Pervasive. И потребовалось из .нет приложения получить весьма хитрый отчет. Нет проблем, через одбс, соединяемся, формируем запрос в диалекте первасива, отдаем серверу, получаем результаты. Очень хорошая штука.

Я про то, что чтобы манипулирвоать данными, не нужно все разнообразие функций что специфично для каждой субд, нужен только механизм сообщения клиента и сервера, с этой ролью одбц прекрасно справляется.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог