Домашнее задание по проектированию базы данных MySQL — отчет об эксперименте по проектированию базы данных «Система онлайн-книжного магазина»

Задание на проектирование базы данных — проектирование базы данных «Системы онлайн-книжного магазина».

1. Функциональные требования

  • Обычные пользователи: вы можете выполнять самые основные операции входа в систему, просматривать книги, запрашивать книги по категориям, просматривать подробную информацию о книгах и регистрироваться в качестве участника.
  • Участники: вам необходимо заполнить подробную информацию (настоящее имя, пол, номер мобильного телефона, адрес, адрес электронной почты и т. д.), вы можете просматривать книги, запрашивать книги по категориям и просматривать подробную информацию о книгах. также заказывать книги, генерировать заказы, просматривать порядок.
  • Администратор: вы можете просматривать книги, запрашивать книги по категориям, просматривать подробную информацию о книгах, просматривать заказы, обрабатывать заказы для обработки доставки, а также просматривать и изменять личную информацию и обновлять информацию о книгах, например добавлять, удалять книги и обновлять инвентарь, изменить название продукта, увеличить столбец атрибутов книги и т. д.
  • Книги. Администратору необходимо упорядочить и классифицировать книги по номеру, названию, типу книги, автору, издателю, дате публикации, цене, скидке, количеству запасов и другой информации.

2. Концептуальная структура базы данных

1. Концептуальное проектирование структуры (ER-диаграмма)

Концептуальное проектирование структуры (диаграмма 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 для создания базовых таблиц

CREATE TABLE MEMBER
(
	ACCOUNT_NUMBER CHAR(20) NOT NULL,
	PASSWORD VARCHAR(50) NOT NULL,
	ADDRESS	VARCHAR(50),
	MEMBER_ID VARCHAR(50),
	REGTIME	VARCHAR(50),
	PHONE_NUMBER VARCHAR(50),
	POSTBOX	VARCHAR(50),
	SEX	VARCHAR(8),
	NAME VARCHAR(50)
)

CREATE TABLE ADMINISTRATOR
(
	ADMINISTRATOR_ID CHAR(20) NOT NULL,
	AD_CODE	CHAR(30) NOT NULL,
	AD_NAME	VARCHAR(20) NOT NULL,
	E_MAIL VARCHAR(50),
	TELEPHONE VARCHAR(20)
)

CREATE TABLE ORDER_SHOW
(
	ORDER_ID CHAR(20) NOT NULL,
	NUMBER CHAR(30) NOT NULL,
	DATE VARCHAR(20),
	SUM	INT NOT NULL,
	WAY	VARCHAR(20) NOT NULL,
	PAYMENT_WAY	VARCHAR(20) NOT NULL,
	TOTAL_PRICE	VARCHAR(20),
	SHIPPING_ADD VARCHAR(50) NOT NULL,
	CONTACT	VARCHAR(20) NOT NULL,
	CONSIGNEE VARCHAR(50) NOT NULL,
	ISSUANCE_DATE VARCHAR(20),
	ADMINISTRATOR_ID VARCHAR(20) NOT NULL
)

CREATE TABLE BOOK
(
	BOOK_ID	CHAR(20) NOT NULL,
	BOOK_NAME CHAR(30) NOT NULL,
	TYPE VARCHAR(20),
	AUTHOR VARCHAR(20) NOT NULL,
	PRESS VARCHAR(50) NOT NULL,
	PRESS_DATE VARCHAR(20) NOT NULL,
	PRICE FLOAT NOT NULL,
	DISCOUNT FLOAT NOT NULL,
	STOCK_NUM INT,
	MEM_NUM CHAR(20) NOT NULL
)

5. Управление базовыми таблицами

--(1) 向图书表增加“页数”列,其数据类型是整数型
ALTER TABLE BOOK ADD B_PAGE INT

--(2) 将“图书表”中的“页数”数据类型改成短整型
ALTER TABLE BOOK ALTER COLUMN B_PAGE SMALLINT

--(3) 增加“图书表”中“页数”取值必须大于0的约束条件
ALTER TABLE BOOK ADD CONSTRAINT CK_PAGE CHECK(B_PAGE > 0)

--(4) 删除“图书表”中的页数列
ALTER TABLE BOOK DROP CONSTRAINT CK_PAGE

--(5) 删除“图书表”
DROP TABLE BOOK

6. Создание представлений и управление ими

--建立一个“图书类别”为“计算机”的视图
GO
CREATE VIEW COMPUTER AS SELECT * FROM BOOK WHERE TYPE = '计算机'
GO

7. Создавайте индексы и управляйте ими

--在会员表上为姓名建立索引
CREATE UNIQUE INDEX 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 ORDER BY 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 = '英语初级听力(学生用书)' ORDER BY SUM DESC

--(7)查询订单数位列前三的会员信息
SELECT * FROM MEMBER WHERE NAME IN (SELECT TOP 3 NAME FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUP BY NAME ORDER BY SUM(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)统计会员所有订单的订购总价
SELECT SUM(TOTAL_PRICE) FROM ORDER_SHOW

--(10)查询订购总价大于200的会员的账号
SELECT NUMBER FROM ORDER_SHOW,MEMBER WHERE ACCOUNT_NUMBER = NUMBER GROUP BY NUMBER HAVING SUM(TOTAL_PRICE) > 200

9. Обновление данных

INSERT INTO MEMBER VALUES ('jtxia','123456','河北省廊坊市','@~@','2020-2-1','12345678912','[email protected]','女','张玲')

--(1)书店新进一种图书,即向图书表中增加一种新的图书,ISBN号为9787302164784,书名为软件工程导论(第5版),作者为张海潘,出版社为清华大学出版社,定价为35,折扣为8,图书类别为计算机,图书概况为“本书可作为高等院校软件工程课程的教材或教学参考书”,库存量为50
INSERT INTO BOOK VALUES ('9787302164784','软件工程导论(第5版)','计算机','张海潘','清华大学出版社','2014-3-8',35.0,0.80,50,'jskdb')

--(2)书店价格调整,将“软件工程导论(第5版)”图书的“折扣”更新为7.5折
UPDATE BOOK SET DISCOUNT = 0.75 WHERE BOOK_NAME = '软件工程导论(第5版)'

--(3)会员地址变更,将会员账号为“jtxia”的地址更新为“天津大学”
UPDATE MEMBER SET ADDRESS = '天津大学' WHERE ACCOUNT_NUMBER = 'jtxia'

--(4)书店进货,将所有图书的库存量增加10
UPDATE BOOK SET STOCK_NUM = STOCK_NUM + 10

--(5)活动促销,将“计算机”类图书的折扣全部减1(多打一折)
UPDATE BOOK SET DISCOUNT = DISCOUNT - 0.1 WHERE TYPE = '计算机'

--(6)由于图书下架,删除图书“软件工程导论(第5版)”
DELETE FROM 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)" на панели инструментов, и вы увидите окно с сообщением об успешном резервном копировании.

Supongo que te gusta

Origin blog.csdn.net/mercury8124/article/details/129251315
Recomendado
Clasificación