Консультация № 184600
28.11.2011, 19:05
54.86 руб.
0 5 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Нудно создать БД на MySQL типа Аптека.....таблицы:
1)Аптека,
2)Преперат,
3)Изготовитель

В 1 указать адреса Аптек
В 2 препараты( до 10 штук хотябы)
В 3 Изготовитель препаратов(поставщик как бы)

Реализовать ключи первичные вторичные для поиска. Написать все это на SQL языке и представить ввиде фаила
Это написано со слов друга.... вот ссылка на подобное(только без оформления сделайте) Клик
Смотрите раздел Реализация структуры БД и её функции....нечто подобное сделать надо на MySQL по типу Аптека и диаграмку в WORD отношений
Спасибо.

Обсуждение

Неизвестный
03.12.2011, 03:28
общий
кто нибудь сделает это?
Неизвестный
03.12.2011, 03:29
общий
или посоветуйте мне пожалуйста книги(ну или натолкните на мысль как это все сделать самому) ибо в БД не разбираюсь вообще
давно
Мастер-Эксперт
425
4118
03.12.2011, 04:58
общий
Ещё немножко подождите, я Вам сегодня сделаю. В предыдущие дни занят был.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
03.12.2011, 15:35
общий
это ответ
Здравствуйте, Юдин Евгений Сергеевич!


Поскольку конкретную задачу на постройку БД Вы не знаете, то задачу опишу я сам, т.к. именно исходя из задачи должно идти проектирование.

Задача: Спроектировать базу данных для работы в справочнике лекарственных средств, которые продаются в той или иной аптеке.

Проектирование: Условно говоря, БД делится на две зоны:
1) Справочные таблицы. Это то, с чего начинается заполнение базы данными и откуда берутся данные для заполнения рабочих таблиц. Справочные таблицы нужны для того, чтобы делать меньше ошибок при добавлении данных в базу.
2) Рабочие (операционные) таблицы. С этими таблицами ведётся основная работа в базе. Проектируютсяя они с тем расчётом, чтобы максимум данных брать из справочных таблиц.

Справочники: Исходя из задачи у нас напрашиваются, минимум, три справочника:
Справочник аптек, в котором содержаться название, адрес и телефон аптеки.
Справочник лекарств, в котором содержаться название и производитель лекарств.
Справочник производителей лекарств, в котором содержится название, адрес и телефон производителя.

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

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

SQL-скритп, создающий базу данных требуемой структуры, представлен в приложении.
Рисунок, показывающий связи между таблицами, в прикреплённом файле.

Приложение:
-- -----------------------------------------------------
-- Создание БД, если она не существует
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `mydb` ;
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Справочные таблицы
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Table `mydb`.`pharmacyes`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`pharmacies` ;

CREATE TABLE IF NOT EXISTS `mydb`.`pharmacyes` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный номер аптеки' ,
`name` VARCHAR(45) NOT NULL COMMENT 'Название аптеки' ,
`address` VARCHAR(80) NOT NULL COMMENT 'Адрес аптеки' ,
`phone` VARCHAR(45) NULL COMMENT 'Телефон аптеки' ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `name_UNIQUE` (`name` ASC) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci,
COMMENT = 'Справочник аптек' ;

-- -----------------------------------------------------
-- Table `mydb`.`manufacturers`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`manufacturers` ;

CREATE TABLE IF NOT EXISTS `mydb`.`manufacturers` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный номер производителя' ,
`name` VARCHAR(45) NOT NULL COMMENT 'Назвние производителя' ,
`address` VARCHAR(80) NOT NULL COMMENT 'Адрес производителя' ,
`phone` VARCHAR(45) NULL COMMENT 'Телефон производителя' ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `name_UNIQUE` (`name` ASC) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci,
COMMENT = 'Справочник производителей лекарств' ;

-- -----------------------------------------------------
-- Table `mydb`.`medications`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`medications` ;

CREATE TABLE IF NOT EXISTS `mydb`.`medications` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный номер лекарства' ,
`name` VARCHAR(45) NOT NULL COMMENT 'Название лекарства' ,
`manufacturer_id` VARCHAR(45) NOT NULL COMMENT 'Номер производителя' ,
PRIMARY KEY (`id`) ,
INDEX `manufacturer` (`manufacturer_id` ASC) ,
INDEX `name` (`name` ASC) ,
INDEX `fk_medications_manufact` (`manufacturer_id` ASC) ,
CONSTRAINT `fk_medications_manufact`
FOREIGN KEY (`manufacturer_id` )
REFERENCES `mydb`.`manufacturers` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci,
COMMENT = 'Справочник лекарств' ;

-- -----------------------------------------------------
-- Рабочая (операционная) таблица)
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Table `mydb`.`medicadict`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`medicadict` ;

CREATE TABLE IF NOT EXISTS `mydb`.`medicadict` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный номер записи' ,
`medication_id` INT NULL COMMENT 'Номер лекарства' ,
`pharmacy_id` INT NULL COMMENT 'Номер производителя' ,
`price` DECIMAL(10,2) NULL COMMENT 'Цена лекарства' ,
`count` INT NULL COMMENT 'Количество лекарства' ,
PRIMARY KEY (`id`) ,
INDEX `medication` (`medication_id` ASC) ,
INDEX `pharmacy` (`pharmacy_id` ASC) ,
INDEX `price_idx` (`price` ASC) ,
INDEX `fk_medicadict_medica` (`medication_id` ASC) ,
INDEX `fk_medicadict_pharmacy` (`pharmacy_id` ASC) ,
CONSTRAINT `fk_medicadict_medica`
FOREIGN KEY (`medication_id` )
REFERENCES `mydb`.`medications` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_medicadict_pharmacy`
FOREIGN KEY (`pharmacy_id` )
REFERENCES `mydb`.`pharmacyes` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci,
COMMENT = 'Справочник лекарств продающихся в аптеках' ;

-- -------------------------------------------------------
-- Примеры данных для справочных таблиц
-- -------------------------------------------------------
INSERT INTO `pharmacies` (name, address) VALUES ('36 и 6', 'ул. Севастопольская, дом 36');
INSERT INTO `pharmacies` (name, address) VALUES ('Добрый доктор Айболит', 'ул. Розы Люксембург, дом 11');

INSERT INTO `manufacturers` (name, address) VALUES ('Хималайя Драг Ко.', 'Макали, Бангалор 562 123, Индия');
INSERT INTO `manufacturers` (name, address) VALUES ('КРККА', 'Ново место, Шмарьешка цеста 6, 8501б Словения');
INSERT INTO `manufacturers` (name, address) VALUES ('Хемофарм А.Д.', 'г. Варшац, Сербия');
INSERT INTO `manufacturers` (name, address) VALUES ('Пранафарм ООО.', '443068б г. Самара, ул. Ново-Садовая, 106, кор. 81');

INSERT INTO `medications` (name, manufacturer_id) VALUES ('Энап-НЛ', 3);
INSERT INTO `medications` (name, manufacturer_id) VALUES ('Амоксициллин', 2);
INSERT INTO `medications` (name, manufacturer_id) VALUES ('Каптоприл', 4);
INSERT INTO `medications` (name, manufacturer_id) VALUES ('Лив-52', 1);
INSERT INTO `medications` (name, manufacturer_id) VALUES ('Аллохол', 1);
Прикрепленные файлы:
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Академик
320937
2216
03.12.2011, 17:08
общий
Добрый день, Евгений Сергеевич!
Цитата: 324791
или посоветуйте мне пожалуйста книги(ну или натолкните на мысль как это все сделать самому) ибо в БД не разбираюсь вообще

На мой взгляд, лучшее для старта - Мартин Грабер "Введение в SQL".
Форма ответа