Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

БД в PHPmyAdmin’е должна быть с фамилией создателя.




Практическая работа №2. Создание баз данных и таблиц. Информационное наполнение.

 

ПРАВИЛА наименований:

1) Ключи

= обозначение ключа

+ нижнее подчеркивание

+ без пробелов

+ название таблицы в нижнемВерблюжьемРегистре

2) Остальные столбцы

= без пробелов

+ нижнийВерблюжийРегистр

 

>> periodForBack

 

3) Таблицы

= без пробелов

+ нижнийВерблюжийРегистр

 

>> workOfWriters

 

4) Таблицы, которые образуются при разбиении связи N – N

= без пробелов

+ краткое название одной таблицы

+ нижнее подчеркивание

+ краткое название другой таблицы

+ нижнийВерблюжийРегистр

 

book >> book_work << workOfWriters

 


Порядок выполнения:

 

I. Построить физическую модель БД Библиотека в CASE – среде MySQL Workbench – название libraryEx_ФАМИЛИЯ

По окончании проверить:

0) У каждой связи – столбец дочерней таблицы fk_titleTable и столбец родительской таблицы pk_titleTable имеют ОДИНАКОВЫЕ типы и наличие NN и UN, иначе ошибки 150 не избежать.

1) Все столбцы – NOT NULL.

2) Для столбцов числовых типов – UNSIGNED.

3) Если есть pk_titleTable – только он является ключом.

Если НЕТ pk_titleTable, то ключ будет составным из нескольких fk_titleTable – обычно можно такое встретить в таблицах, появляющихся при разбиении связи N – N, и не имеющих дополнительных связей. И AUTO_INCREMENT у них нет, поскольку являются внешними ключами foreign key, но группой создают первичный ключ primary key.

4) У первичного ключа pk_titleTable, НЕсоставного, AUTO_INCREMENT есть.

 

II. Сохранить модель libraryEx, сделать экспорт скрипта libraryEx.sql и копию скрипта.

Скрипт libraryEx.sql отправить на создание базы данных в PHPmyAdmin, если БД создалась без ошибок – удалить ее с сервера и приступить к редактированию копии скрипта.


БД в PHPmyAdmin’е должна быть с фамилией создателя.


III. Редактирование скрипта:

1) INDEX… и  CONSTRAINT… удалить

2) Во всех таблицах проверить установку первичных ключей. Если pk_titleTable – должен быть один в скобочках. >> PRIMARY KEY (`pk_issued`)

Если составной, то из нескольких fk. >> PRIMARY KEY (`fk_issued`, `fk_fine`)

3) В рамках одной таблицы все параметры ON DELETE должны быть одинаковыми, и все параметры для ON UPDATE – тоже.

Во всех таблицах изменить параметры установки внешних ключей:

– ON UPDATE для всех таблиц с внешними ключами заменить NO ACTION на CASCADE;

– ON DELETE для таблицы book заменить NO ACTION на SET NULL;

– во внешних ключах таблицы book убрать опцию NOT NULL, поскольку используем ON DELETE SET NULL.

4) В таблице periodForBack для столбца periodForBack установить значение по умолчанию 10.

5) Получившийся скрипт отправить на создание базы данных в PHPmyAdmin.


БД в PHPmyAdmin’е должна быть с фамилией создателя.

 

IV. Наполнение базы данных, 1 способ – с помощью оператора INSERT.

1)   insert [IGNORE] [INTO] имя_таблицы [(имя_столбца, ... )]

VALUES (выражение, ... );

Вставить в таблицу publishingCompany (издательство) первую строку:

INSERT INTO publishingCompany (pk_publishingCompany, titlePublishingCompany, cityPublishingCompany)

VALUES (1,'Вся Вселенная','Туманность Андромеды');

В таблице появится первая строка.

 

2) Чтобы новые записи с дублирующим ключом отбрасывались без генерации ошибки, следует добавить после оператора insert ключевое слово IGNORE.

Вставить строку с ключом 1 повторно:

INSERT IGNORE INTO publishingCompany (pk_publishingCompany, titlePublishingCompany, cityPublishingCompany)

VALUES (1,'Дрофа','Москва');

Издательство Дрофа не добавилось.

3) Столбец pk_titleTable, у которого установлен AUTO_INCREMENT, и столбцы TIMESTAMP – в операторе INSERT, обычно, не прописывают – значения устанавливаются автоматически.

Добавить издательство Дрофа, без ключа –  IGNORE не нужен:

INSERT INTO publishingCompany (titlePublishingCompany, cityPublishingCompany) VALUES ('Дрофа','Москва');

 

4) Чтобы значение столбца заполнилось по умолчанию, его либо не указывают в INSERT, либо указывают = DEFAULT.

Вставить строку в таблицу periodForBack(срок возврата):

INSERT INTO periodForBack (pk_periodForBack, periodForBack)

VALUES (DEFAULT, DEFAULT);

Здесь столбец pk_periodForBack имеет счетчик, а у столбца periodForBack – есть значение по умолчанию, равное 10.

 

5) Если значение у столбцов символьных типов значений по умолчанию не установлено, то добавятся '' (пустые строки):

INSERT INTO publishingCompany (pk_publishingCompany, titlePublishingCompany, cityPublishingCompany)

VALUES (DEFAULT, DEFAULT, DEFAULT);

Значений по умолчанию у столбцов titlePublishingCompany(название издательства) и cityPublishingCompany(город издательства) нет:

 

6) Заменить пустое издательство (pk_publishingCompany =3) на издательство «Молоко», город Млечный путь.

       REPLACE [INTO] имя_таблицы [(имя_столбца, ... )]

       VALUES (выражение, ... )

Оператор REPLACE работает как оператор insert, за исключением того, что старая запись с тем же значением индекса unique или primary key перед внесением новой будет удалена. Если не используются индексы unique или primary key, то применение оператора replace не имеет смысла.

REPLACE INTO publishingCompany (pk_publishingCompany, titlePublishingCompany, cityPublishingCompany)

VALUES (3, 'Молоко', ' Млечный путь ');

 

7) Пример вставки строки в таблицу reader(читатель) с полями типов

ENUM('М', 'Ж')  –> М номер (1), Ж номер (2)

TIMESTAMP

DATE

INSERT INTO reader (pk_reader, lastname, firstname, middlename, number_tel, city, addres, gender, dateOfBirth, dateOfEntry)

VALUES (DEFAULT, 'Голубь', 'Анастасия', 'Николаевна', '89530000000', 'Кировск', 'Улица дд-кк', (2), '1999-01-01', DEFAULT);

 

8) вставки

внесем Марсианский язык

INSERT INTO language (pk_language, titleLanguage)

VALUES (DEFAULT, 'Марсианский');

 

внесем произведение на марсианском языке, для него fk_language=1

INSERT INTO workOfWriters (pk_workOfWriters, titleWork, fk_language)

VALUES (DEFAULT, 'Как построить звездолет и блэк-джек чужими манипуляторами', 1);

 

еще одно

INSERT INTO workOfWriters (pk_workOfWriters, titleWork, fk_language)

VALUES (DEFAULT, 'Душа робота. Двоичные размышления о жизни после пресса', 1);

 

внесем писателя

INSERT INTO writer (pk_writer, lastnameWriter, firstnameWriter, middlenameWriter)

VALUES (DEFAULT, 'Родригес', 'Бендер', 'Сгибатель');

 

укажем,что Родригес Сгибатель(fk_writer=1) написал книгу

«Как построить звездолет и блэк-джек чужими манипуляторами» (fk_workOfWriters=1)

INSERT INTO work_writer (fk_workOfWriters, fk_writer)

VALUES (1,1);

 

и он же автор произведения – «Душа робота. Двоичные размышления о жизни после пресса» (fk_workOfWriters=2)

INSERT INTO work_writer (fk_workOfWriters, fk_writer)

VALUES (2,1);

внесем раздел библиотеки

INSERT INTO sectionOfLibrary (pk_sectionOfLibrary, titleSection)

VALUES (DEFAULT, 'Прозрачные тексты на мутные темы');

 

внесем издания этих произведений в издательстве «Вся вселенная» (fk_publishingCompany=1)

 

INSERT INTO book (pk_book, numbersOfPage, numberOfCopies, yearOfPublication, fk_publishingCompany, fk_sectionOfLibrary, fk_language)

VALUES (DEFAULT, 354, 7, 2017, 1, 0, 1);

 

INSERT INTO book (pk_book, numbersOfPage, numberOfCopies, yearOfPublication, fk_publishingCompany, fk_sectionOfLibrary, fk_language)

VALUES (DEFAULT, 555, 5, 2018, 1, 0, 1);

 

внесем соответствие между изданием и произведением

INSERT INTO book_work (fk_book, fk_workOfWriters)

VALUES (2,1);

INSERT INTO book_work (fk_book, fk_workOfWriters)

VALUES (3,2);

 

внесем информацию о том, что пользователь Голубь pk_reader=1 взял книгу 3 (pk_book=3 она же произведение «Душа робота…» (pk_workOfWriters=2))

INSERT INTO issued (pk_issued, numberOfIssue, dateOfIssue, dateActualReturn, fk_periodForBack, fk_reader, fk_book)

VALUES (DEFAULT, 1, DEFAULT, '', 1, 1, 3);

 

 

 

V.Задания для самостоятельного выполнения.

 

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

 

ФИО -
1) Изменить тип столбца fineOf (размер штрафа) в таблице fine на DECIMAL(5,2)
 
2) Внести штраф «за день просрочки» 30руб
 
3) Добавить столбец email в таблице читатель, сделать уникальным полем.
 
4) Добавить столбец fotoWriter в таблице писатель(writer).
 
5) Внести произведение (workOfWriters) «Последний вопрос мутанту», авторов(writer) у него два – Бендер Сгибатель Родригес и Филип Фрай.
 
6) Произведение было напечатано в издательстве «Молоко», 2017г(yearOfPublication), 341 страница(numbersOfPage), перевод с марсианского на русский (language)
 
7) в библиотеку это издание поступило в количестве 3 штук в раздел «Прозрачные тексты на мутные темы» (sectionOfLibrary).
 
8) Книгу взял читатель Голубь в количестве (numberOfIssue) 1 штуки.
 
9) Добавить себя, в качестве читателя, тоже взять в библиотеке почитать эту книгу, в количестве 1 штуки. Голубь рекомендовал J
 

 

 










Последнее изменение этой страницы: 2018-06-01; просмотров: 185.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...