00:29

Вопрос

Пропускай все через сердце
Здравствуйте, ребята, я к вам за советом.
Ситуация такова, в прошлом семестре мы "изучали" SQL Server 2000, там была небольшая база и несколько примеров триггеров. Самостоятельно ничего не писали. По ряду причин ни у кого нет ни малейшего понятия о том, что это вообще такое.
Но в этом семестре нужно писать курсовую, в дальнейшем - усложнять...
Задание таково: разработать некую информационную систему и организовать ряд запросов. Это начало. Вот что мне нужно для этого почитать, чтобы сделать?
Я так поняла, что схему данных, таблицы можно сделать в аксесе, а потом перенести на сервер - вроде так препод говорил.
Ну или можно сразу делать на сервере. То есть я создаю таблицы, связи между ними.
Потом я создаю...триггеры? для выполнения запросов?
что мне корнкретно посмотреть на эту тему? именно синтаксис языка sql? для сервера?
И часть вторая - усложнение. Я знаю, ребята как-то связывали сайт с базой, но я так поняла, тут нужны php и mysql. А можно еще сделать вроде программную оболочку, например, на делфи или си шарп. Вот интересует и то и то. Особенно - второе. Сложно ли это? Как это реализовать? Где почитать?
Направьте в нужное русло, пожалуйста!

Комментарии
23.02.2010 в 01:34

c# aspx .net
23.02.2010 в 04:07

There I was on a July morning, Looking for love
.masa
Для связи MSSQL c сайтом нужен PHP. MySQL - это совершенно отдельный сервер БД.
У PHP есть библиотеки как для работы с MySQL, так и для работы с MSSQL.
Для MySQL в PHP служыит ряд функций, главная из которых - mysql_query(). Она передает запрос в базу и возвращает результат.
Для MSSQL есть аналогичные ф-ии.
Я не уверен, что до конца понял суть вопроса... Ты просто хочешь сделать приложение, работающее с БД ?
Если хочешь, пиши на юмыло или в аську, поговорим подробно.
23.02.2010 в 10:47

Пропускай все через сердце
SpiritEagle а есть сильная разница между MySQL и MSSQL? просто я ни того, ни того пока не знаю...))
Ну пока я просто хочу на сервере создать базу и мне необходимо реализовать запросы в виде хранимых процедур, я так понимаю.
А уже потом хорошо бы сделать приложение, работающее с БД - мне кажется, что это звучит страшнее, чем есть на самом деле, хотелось бы просто подробного пошагового))) описания.
Ну или же сайт...правда мне кажется, так мороки больше будет, потому склоняюсь к приложению.
Просто я тут абсолютный чайник, у меня проблема именно в том, что я как корабль в море - не знаю, с чего начать, к чему приступиться и что вообще следуюет делать)
спасибо, я в дальнейшем, когда немного разберусь,напишу)
23.02.2010 в 11:25

системы - бессистемные, стандарты - нестандартные, Пространство - неэвклидово, хрен знает, чьё оно. (с) Тимур Шаов
есть сильная разница между MySQL и MSSQL
сильной разницы нет, есть свои особенности, но если уже начала ковыряться в MS, о лучше в другие дебри и не лезть) чтоб лишний раз не путаться
23.02.2010 в 19:28

There I was on a July morning, Looking for love
.masa
Разница между MySQL и MSSQL, безусловно, есть - это два разных программных продукта (хоть и диалекты SQL у них очень мало различаются, по крайней мере, в азах).
Если дело такое, что тебе надо хоть что-то, то надо разобраться для начала, какой софт есть на сервере.
Если тебя не ограничивают в выборе... Что ж, тогда я бы выбрал PHP+MySQL.
Т.е. язык программирования PHP, на котором делаются веб-сайты. НА нем можно написать простой обозреватель баз данных - это делается весьма просто.
База данных MySQL полностью бесплатна, есть на 99.9% процентах хостингов, даже на бесплатных.
Если не хочешь макаться в дела с хостингами - я тебе могу дать маленький хостинг и помогу зарегать для него бесплатный доменчик.

Насчет хранимых процедур...
Т.к. мой профиль все-таки не "программист баз данных", то наличие таковых стало для меня открытием. Почитал - понравилось, ничего сложного.

Вообще говоря, если в твоем задании на курсовую нету требования к использованию хранимых подпрограмм, то можно делать и без них.

В целом, пошаговая инструкция выглядит так...

1. Создается база данных.
2. В ней создаются таблицы таким образом, чтобы они как можно логичнее хранили в себе информацию, которую ты собираешься в них держать.
3. Создается приложение-обозреватель баз данных (на том же PHP). Приложение передает в БД запросы и получает результаты. Оно может добавлять, изменять/удалять, выбирать информацию из базы данных.

Допустим, у тебя есть некий каталог товаров магазина.
У товаров есть следующие х-ки:
1. Уникальный идентификационный номер (если нет - назначаем автоматически).
2. Наименование.
3. Цена.
4. Вес.
5. Цвет.
6. Наличие/отсутсвие на складе.
7. Страна-изготовитель.
8. Фирма-изготовитель.
9. Категории, к которым товар относится (напр. Холодильник - бытовая техника/электроприбор, средство для мытья кастрюль - бытовая химия, бумага - канцелярские принадлежности / расходные материалы).
10. Описание.

На основании этого строим таблицу goods из девяти полей.
id - Тип INT, длинна... Если речь идет об абстрактной базе (то есть не настоящего магазина) то 3 хватит. Если от широкой души, то 11.
name - Наименование товара. VARCHAR длинной 255.
price - Цена. Цена - это десятичная дробь с двумя символами после точки (запятой).предположим, что самый дорогой товар в теории может стоить 10000. Тогда нам нужно поле типа FLOAT длинны (7, 2) (т.е. ВЫсего 7 цифр, из которых 2 - после точки).
weight - Пусть будет, допустим, INT (11). Будем держать вес в граммах.
color - Здесь сойдет VARCHAR(6) - цвет держать неплохо бы в шестнадцатиричном формате.
isthere - Наличие/отсутсвие на склап. INT(1). Если там 1 - присутствует, если 0 - отсутсвует.
7. country - Страна-изготовитель. Здесь логично сделать связь типа "многие к одному", вынеся в отдельную таблицу countries страны-производители, а в поле country таблицы goods (пишется goods.country) держать только id строки из таблицы countries, в которой содержится инфа об этой стране, потому INT(11). Альтернативный вариант: держать некий код страны (UA, RU и т.д.), или даже её название (Украина, Россия и т.д.) непосредственно в поле goods.country, сделав его для этого VARCHAR, например, (20). Но это крайне тупорыло - поиск по этому полю в базе будет создавать намного большие нагрузки, и работать очень медленно. Да и, например, вывести список всех стран в приложении-обозревателе, чтобы в подборе отобразить только украинские или немецкие холодильники будет необходимо реализовывать уже более сложным запросом.
8. brand - Фирма-изготовитель. Тут аналогично пункту 7: создаем поле brand, в него запихиваем id из таблицы brands, содержащей все мыслимые бренды.
10. about - Описание. Тупорылое поле типа TEXT. Длинну ему, как я помню, не задают вообще.

Насчет пункта 9. Здесь есть смысл реализовать связь типа "многие ко многим", т.е.: создается таблица categories, в которой хранятся все названия категорий в поле типа VARCHAR (100), и id этих категорий. Создается также ещё одна таблица из двух полей - categories_array. В певом поле - id_good - хранятся id товаров из таблицы goods, во втором поле - id_category - id категорий из categories.
Тогда наличие записей, например:
id_goods id_categories
207 34
207 37
207 145
516 314
707 3
707 4
Будет означать:
"Товар 207 относится к категориям 34, 37 и 145.
Товар 516 относится к категории 34.
Товар 707 относится к категории 3."
На практике:
Бумага (207) к категориям Канцелярия (34), Расходные материалы (37), Средства личной гигиены (145).
Холодильник (516) относится к категории Бытовая теника (314).
Фэйри (707) относится к категориям Бытовая химия (3) и Моющие средства (4).

Дальше надо проставить ключи. Вот с этим у меня в базах вельми туго...
Но ИМХО:

goods.id - PRIMARY KEY
(goods.name + goods.brand) - UNIQUE
goods.brand - KEY
goods.country - KEY
goods.price - KEY

Это для MySQL.

Вот. Надеюсь, поможет.
MySQL на винду лучше ставить вместе с пакетом Denwer, там есть встроенный phpMyAdmin (удобен для работы с MySQL), в нем можно проводить с ней практически любые операции. В Денвере же есть и интерпретатор PHP, и веб-сервер Apache (под ним в частности PHP работает). Все это ставится в два-три щелчка по одному экзешнику.

Или я не до конца понимаю, что тебе надо все-таки на курсовую сделать ?
Опять таки, аська/umail, если что...
23.02.2010 в 20:13

Пропускай все через сердце
Ох, спасибо большущее за такую шикарную инструкцию, будет очень полезной, пусть мы же разрабатывали проекты в Аксесе, так что представление о БД, огранизации целостности, избежания избыточности имею)) Как раз таки было несколько 3-5 таблиц, формы, запросы и отчеты)
В сервере нужно написать запросы - ХП - необходимо разобраться с синтаксисом SQL. Это проблема номер раз.
Понять вообще клиент-серверное взаимодействие, его принципы и смысл в данном случае.
Ну и потом понять, как бы сделать приложение на си шарпе желательно и подключить туда БД))
23.02.2010 в 21:33

There I was on a July morning, Looking for love
.masa
Насчет хранимых процедур в MySQL - zoonman.ru/library/mysql_sr_and_t.htm , в MSSQL - www.intuit.ru/department/database/sql/12/2.html .
Принципы клиент-серверного взаимодействия - работа с БД из языка программирования при помощи библиотек по работе с нужной БД этого языка.
Смысл - обозревание базы данных с помощью обозревателя с дружественным, интуитивно-понятным интерфейсом. База данных сама по себе вменяемого интерфейса для работы с ней человека не имеет, так что человекопонятный интерфейс реализуется на конкретном языке программирования, причем приложение должно быть связано с БД посредством своего драйвера БД (своих библиотек для работы с этой базой).
С С# раньше не работал, только видел код, и из увиденного могу заключить, что особо сложно там быть не должно.
Если же все-таки решишься на PHP, то тут я смогу клиентское приложение для работы с базой, например, такой, как я выше показывал, сделать без особого труда (как и любой PHP-кодер, знакомый с MySQL), да ещё подробно объяснить, что да как там работает.
Придумать, какие туда ХП запихнуть - тоже дело не очень сложное. Например, выборка товаров. Это запрос, который при выводе полной информации проведет здесь несколько JOIN'ов. Это можно будет в ХП запихнуть. Правда, повторюсь: я с ХП раньше не работал, потому что целесообразно в ХП засовывать, а что - нет, с уверенностью сказать не смогу.
23.02.2010 в 22:40

Пропускай все через сердце
Спасибо огромное за такое неоценимое внимание и помощь, поверьте, уже это много) В добрый путь, буду работать)
Да, я уже поняла про интерфейс) насчет php подумаю, это пока вторая часть) ну вот задание могу показать.
Задание