Задание на проектирование базы данных — проектирование базы данных «Системы онлайн-книжного магазина».
1. Функциональные требования
Обычные пользователи: вы можете выполнять самые основные операции входа в систему, просматривать книги, запрашивать книги по категориям, просматривать подробную информацию о книгах и регистрироваться в качестве участника.
Участники: вам необходимо заполнить подробную информацию (настоящее имя, пол, номер мобильного телефона, адрес, адрес электронной почты и т. д.), вы можете просматривать книги, запрашивать книги по категориям и просматривать подробную информацию о книгах. также заказывать книги, генерировать заказы, просматривать порядок.
Администратор: вы можете просматривать книги, запрашивать книги по категориям, просматривать подробную информацию о книгах, просматривать заказы, обрабатывать заказы для обработки доставки, а также просматривать и изменять личную информацию и обновлять информацию о книгах, например добавлять, удалять книги и обновлять инвентарь, изменить название продукта, увеличить столбец атрибутов книги и т. д.
Книги. Администратору необходимо упорядочить и классифицировать книги по номеру, названию, типу книги, автору, издателю, дате публикации, цене, скидке, количеству запасов и другой информации.
2. Концептуальная структура базы данных
1. Концептуальное проектирование структуры (ER-диаграмма)
2. Разработка логической структуры (таблица базы данных, реляционная модель)
Обычный пользователь ( аккаунт , пароль)
Участник ( учетная запись , пароль, имя участника, время регистрации, номер мобильного телефона, электронная почта, адрес, пол, настоящее имя)
регистрация ( учетная запись ) внешний ключ: учетная запись
Администратор ( номер администратора , пароль администратора, имя администратора, электронная почта, номер мобильного телефона)
Заказ ( номер заказа , номер счета участника, дата заказа, заказанное количество, способ доставки, способ оплаты, общая цена продажи, адрес доставки, контактная информация грузополучателя, имя грузополучателя, дата доставки, лицо, ответственное за заказ админ(номер))
заказ ( номер счета , номер заказа) внешний ключ: номер счета, номер заказа
Внешний ключ процесса ( admin_id , order_id ): admin_id, order_id
Книги ( BookId , название, тип, автор, издатель, дата публикации, цена, скидка, количество на складе, идентификатор участника) Внешний ключ: идентификатор участника
Сведения о заказе ( идентификатор заказа , идентификатор книги , количество заказа, цена заказа) Внешние ключи: идентификатор заказа, идентификатор книги
Нормализованный анализ:
Номер учетной записи является первичным ключом в обычных отношениях пользователя, а функциональные зависимости включают в себя: номер учетной записи -> пароль . обычные пользовательские отношения принадлежат 3NF .
Номер учетной записи является первичным ключом в отношениях членства, а функциональные зависимости включают в себя: номер учетной записи —> пароль, номер учетной записи —> имя участника, номер учетной записи —> время регистрации, номер учетной записи —> номер мобильного телефона, номер учетной записи —> адрес электронной почты, номер учетной записи —> адрес, номер учетной записи —> пол, номер учетной записи -> настоящее имя. 3НФ .
В отношениях администратора номер администратора является первичным ключом, а функциональные зависимости включают в себя: номер администратора —> пароль администратора, номер администратора —> имя администратора, номер администратора —> адрес электронной почты, номер администратора —> номер мобильного телефона, поскольку он находится в управление Частичная функциональная зависимость и транзитивная функциональная зависимость непервичных атрибутов от кода в отношении члена отсутствуют, поэтому отношение менеджера относится к 3НФ .
В отношениях заказа номер заказа является первичным ключом, а функциональные зависимости включают в себя: номер заказа -> номер учетной записи участника, номер заказа -> время заказа, номер заказа -> общее количество заказов, номер заказа -> способ доставки, номер заказа—>способ оплаты, номер заказа—>общая цена продажи, номер заказа—>адрес получения, номер заказа—>контактная информация грузополучателя, номер заказа—>имя грузополучателя, номер заказа—>дата доставки, номер заказа—>ответственный за Администратор (номер) заказа не существует в отношениях заказа, поскольку отсутствует частичная функциональная зависимость и зависимость передаточной функции неосновного атрибута от кода, поэтому отношение заказа относится к 3НФ .
В отношениях книга номер книги является первичным ключом, а функциональные зависимости таковы: номер книги —> название книги, номер книги —> тип книги, номер книги —> автор, номер книги —> издатель, номер книги —> публикация дата, номер книги—>Цена, Номер книги—>Скидка, Номер книги—>Количество запасов Поскольку отсутствует частичная функциональная зависимость и зависимость передаточной функции неключевых атрибутов от кода в связи книги, связь книги относится к 3NF .
3. Создавайте базовые таблицы и управляйте ими
Таблица 1 членства
Атрибуты
имя поля
тип данных
Это пусто / ограничение
счет
НОМЕР СЧЕТА
СИМВОЛ(20)
основной ключ
пароль
ПАРОЛЬ
ВАРЧАР(50)
не пустой
адрес
АДРЕС
ВАРЧАР(50)
может быть пустым
имя участника
ID ПОЛЬЗОВАТЕЛЯ
ВАРЧАР(50)
может быть пустым
Время регистрации
РЕГВАЙМ
ВАРЧАР(50)
может быть пустым
Номер телефона
НОМЕР ТЕЛЕФОНА
ВАРЧАР(50)
может быть пустым
Почта
ПОЧТОВЫЙ ЯЩИК
ВАРЧАР(50)
может быть пустым
пол
СЕКС
ВАРЧАР(8)
может быть пустым
настоящее имя
ИМЯ
ВАРЧАР(50)
может быть пустым
Таблица 2 Таблица администратора
Атрибуты
имя поля
тип данных
Это пусто / ограничение
номер администратора
ADMINISTRATOR_ID
СИМВОЛ(20)
основной ключ
пароль администратора
AD_CODE
СИМВОЛ(30)
не пустой
имя администратора
AD_NAME
ВАРЧАР(20)
не пустой
Почта
ЭЛЕКТРОННАЯ ПОЧТА
ВАРЧАР(50)
может быть пустым
Номер телефона
ТЕЛЕФОН
ВАРЧАР(20)
может быть пустым
Таблица 3 Форма заказа
Атрибуты
имя поля
тип данных
Это пусто / ограничение
номер заказа
НОМЕР ЗАКАЗА
СИМВОЛ(20)
основной ключ
членский аккаунт
ЧИСЛО
СИМВОЛ(30)
не пустой
Дата заказа
ДАТА
ВАРЧАР(20)
может быть пустым
общий заказ
СУММА
INT
не пустой
Способы доставки
СПОСОБ
ВАРЧАР(20)
не пустой
способ оплаты
PAYMENT_WAY
ВАРЧАР(20)
не пустой
общая цена продажи
ИТОГОВАЯ ЦЕНА
ПЛАВАТЬ
может быть пустым
Адрес доставки
SHIPPING_ADD
ВАРЧАР(50)
не пустой
Контактная информация грузополучателя
КОНТАКТ
ВАРЧАР(20)
не пустой
Имя грузополучателя
ГРУЗОПОЛУЧАТЕЛЬ
ВАРЧАР(50)
не пустой
Дата доставки
ВЫПУСК_DATE
ВАРЧАР(20)
может быть пустым
Админ ответственный за этот заказ
ADMINISTRATOR_ID
ВАРЧАР(20)
не пустой
Таблица 4 Книжный стол
Атрибуты
имя поля
тип данных
Это пусто / ограничение
номер книги
BOOK_ID
СИМВОЛ(20)
основной ключ
Заголовок книги
BOOK_NAME
СИМВОЛ(30)
не пустой
тип книги
ТИП
ВАРЧАР(20)
может быть пустым
автор
АВТОР
ВАРЧАР(20)
не пустой
издатель
НАЖИМАТЬ
ВАРЧАР(50)
не пустой
Дата публикации
PRESS_DATE
ВАРЧАР(20)
не пустой
ценообразование
ЦЕНА
ПЛАВАТЬ
не пустой
Скидка
СКИДКА
ПЛАВАТЬ
не пустой
количество на складе
STOCK_NUM
INT
может быть пустым
членский аккаунт
MEM_NUM
СИМВОЛ(20)
не пустой
4. Используйте операторы SQL для создания базовых таблиц
--(1) 向图书表增加“页数”列,其数据类型是整数型ALTERTABLE BOOK ADD B_PAGE INT--(2) 将“图书表”中的“页数”数据类型改成短整型ALTERTABLE BOOK ALTERCOLUMN B_PAGE SMALLINT--(3) 增加“图书表”中“页数”取值必须大于0的约束条件ALTERTABLE BOOK ADDCONSTRAINT CK_PAGE CHECK(B_PAGE >0)--(4) 删除“图书表”中的页数列ALTERTABLE BOOK DROPCONSTRAINT CK_PAGE
--(5) 删除“图书表”DROPTABLE BOOK
6. Создание представлений и управление ими
--建立一个“图书类别”为“计算机”的视图
GO
CREATEVIEW COMPUTER ASSELECT*FROM BOOK WHERETYPE='计算机'
GO
7. Создавайте индексы и управляйте ими
--在会员表上为姓名建立索引CREATEUNIQUEINDEX MEMBER_NAME ON MEMBER(NAME)
8. Запрос данных
--(1)查询“张玲”的会员信息SELECT*FROM MEMBER WHERE NAME ='张玲'--(2)查询图书“中国通史”的价格SELECT PRICE FROM BOOK WHERE BOOK_NAME ='中国通史'--(3)查询网上书店系统中每种数的库存数量,并按照库存数量由多到少排列SELECT STOCK_NUM FROM BOOK ORDERBY STOCK_NUM DESC--(4)查询“陈东光”订购图书的订单情况SELECT*FROM ORDER_SHOW WHERE CONSIGNEE ='陈东光'--(5)列出账号为“jtxia”的会员所订购的所有图书信息SELECT*FROM BOOK WHERE MEM_NUM ='jtxia'--(6)列出“英语初级听力(学生用书)”图书的订购情况,按照订购数量由大到小降序排列SELECT*FROM ORDER_SHOW,BOOK WHERE ORDER_SHOW.NUMBER = MEM_NUM AND BOOK_NAME ='英语初级听力(学生用书)'ORDERBY SUM DESC--(7)查询订单数位列前三的会员信息SELECT*FROM MEMBER WHERE NAME IN(SELECTTOP3 NAME FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUPBY NAME ORDERBYSUM(ORDER_ID))--(8)查询订购过“英语初级听力”,或者“高等数学”的会员账号和姓名SELECT ACCOUNT_NUMBER,NAME FROM MEMBER,ORDER_SHOW,BOOK WHERE MEMBER.ACCOUNT_NUMBER = ORDER_SHOW.NUMBER AND ORDER_SHOW.NUMBER = BOOK.MEM_NUM AND BOOK_NAME ='英语初级听力(学生用书)'OR BOOK_NAME ='高等数学'--(9)统计会员所有订单的订购总价SELECTSUM(TOTAL_PRICE)FROM ORDER_SHOW
--(10)查询订购总价大于200的会员的账号SELECT NUMBER FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUPBY NUMBER HAVINGSUM(TOTAL_PRICE)>200
9. Обновление данных
INSERTINTO MEMBER VALUES('jtxia','123456','河北省廊坊市','@~@','2020-2-1','12345678912','[email protected]','女','张玲')--(1)书店新进一种图书,即向图书表中增加一种新的图书,ISBN号为9787302164784,书名为软件工程导论(第5版),作者为张海潘,出版社为清华大学出版社,定价为35,折扣为8,图书类别为计算机,图书概况为“本书可作为高等院校软件工程课程的教材或教学参考书”,库存量为50INSERTINTO BOOK VALUES('9787302164784','软件工程导论(第5版)','计算机','张海潘','清华大学出版社','2014-3-8',35.0,0.80,50,'jskdb')--(2)书店价格调整,将“软件工程导论(第5版)”图书的“折扣”更新为7.5折UPDATE BOOK SET DISCOUNT =0.75WHERE BOOK_NAME ='软件工程导论(第5版)'--(3)会员地址变更,将会员账号为“jtxia”的地址更新为“天津大学”UPDATE MEMBER SET ADDRESS ='天津大学'WHERE ACCOUNT_NUMBER ='jtxia'--(4)书店进货,将所有图书的库存量增加10UPDATE BOOK SET STOCK_NUM = STOCK_NUM +10--(5)活动促销,将“计算机”类图书的折扣全部减1(多打一折)UPDATE BOOK SET DISCOUNT = DISCOUNT -0.1WHERETYPE='计算机'--(6)由于图书下架,删除图书“软件工程导论(第5版)”DELETEFROM BOOK WHERE BOOK_NAME ='软件工程导论(第5版)'
10. Обслуживание базы данных
резервное копирование базы данных
SQL Server 2008 предоставляет 4 различных метода резервного копирования, а именно: ① полное резервное копирование, резервное копирование всего содержимого всей базы данных, включая журналы транзакций. ②Дифференциальное резервное копирование, которое является дополнением к полному резервному копированию. Дифференциальное резервное копирование создает только резервные копии данных, измененных после последнего полного резервного копирования. ③ Резервное копирование журнала транзакций, резервное копирование журнала транзакций создает резервную копию только содержимого журнала транзакций. ④ Резервное копирование файлов базы данных и файловых групп.Если при создании базы данных для базы данных создается несколько файлов базы данных или файловых групп, можно использовать этот метод резервного копирования. Существует два распространенных метода резервного копирования базы данных: один заключается в использовании Management Studio для резервного копирования базы данных, а другой — в использовании операторов SQL для резервного копирования.
Использование Management Studio для резервного копирования базы данных Перед резервным копированием базы данных сначала необходимо создать новое устройство для хранения резервной копии базы данных. Шаги для создания нового устройства резервного копирования: Откройте «Обозреватель объектов», щелкните «Объект сервера», щелкните правой кнопкой мыши «Устройство резервного копирования», выберите «Новое устройство резервного копирования» и в открывшемся окне «Устройство резервного копирования» введите имя устройства резервного копирования «Онлайн-книжный магазин system_bak», введите путь к которому оно принадлежит в пути «файл», нажмите «ОК», и вы увидите только что созданный резервный файл «онлайн-книжный магазин system_bal» в проводнике объектов слева. Резервная база данных: откройте «Объект сервера», щелкните правой кнопкой мыши только что созданное устройство резервного копирования «Онлайн-книжный магазин System_bak», нажмите «Резервная база данных», в открывшемся окне резервной базы данных выберите базу данных «Онлайн-книжный магазин», тип резервной копии Имя набора резервных копий "Полная", а имя набора резервных копий по умолчанию - "Система онлайн-книжного магазина - Полная резервная копия базы данных". Нажмите кнопку "ОК", чтобы увидеть диалоговое окно, указывающее, что резервная копия базы данных выполнена успешно.
Используйте операторы SQL для резервного копирования базы данных 1) В окне «Новый запрос» введите следующий оператор, чтобы создать устройство резервного копирования. SP_ADDUMPDEVICE 'диск', 'онлайн-книжный магазин system_bak', 'путь к файлу' 2) В новом окне запроса введите следующую инструкцию для резервного копирования базы данных. РЕЗЕРВНОЕ КОПИРОВАНИЕ ДАННЫХ СИСТЕМЫ книжного интернет-магазина НА ДИСК = 'онлайн-книжный магазин system_bak' 3) Нажмите кнопку "! Выполнить (X)" на панели инструментов, и вы увидите окно с сообщением об успешном резервном копировании.