Mối quan hệ giữa các thực thể

Một phần của tài liệu Quản lý cơ sở dữ liệu quán cafe (Trang 28)

Mối quan hệ Mô tả

Nhân viên - Ca làm việc Một nhân viên sẽ có một hoặc nhiều ca làm việc Một ca làm việc sẽ có nhiều nhân viên

Nhân viên - Lương nhân viên Một nhân viên sẽ có một mức lương

Mỗi mức lương sẽ có thể có một hoặc nhiều nhân viên nhận được

Hóa đơn bán hàng - Khách

hàng Một khách hàng có thể có một hoặc nhiều hóa đơn

Một hóa đơn chỉ thuộc một và chỉ một khách hàng

Loại khách hàng - Khách

hàng Một loại khách hàng có nhiều khách hàng

Một khách hàng chỉ thuộc một loại khách hàng tại một thời điểm

Hóa đơn bán hàng - Nhân

viên Một nhân viên sẽ phụ trách nhiều hóa đơn

Một hóa đơn do một nhân viên phụ trách

Hóa đơn bán hàng - Chi tiết

25

Chi tiết hóa đơn - Sản phẩm Một chi tiết hóa đơn có một hoặc nhiều sản phẩm Một sản phẩm thuộc một hoặc nhiều chi tiết hóa đơn

Khuyến mãi - Chi tiết

khuyến mãi theo sản phẩm Một mã khuyến mãi sẽ là một hình thức khuyến mãi theo sản phẩm hoặc theo hóa đơn Mỗi loại khuyến mãi theo sản phẩm có thể có không hay nhiều mã khuyến mãi

Khuyến mãi - Chi tiết

khuyến mãi theo hóa đơn Một mã khuyến mãi sẽ là một hình thức khuyến mãi theo hóa đơn Mỗi loại khuyến mãi theo hóa đơn có thể có không hay nhiều mã khuyến mãi

Khuyến mãi - Hóa đơn Mỗi hóa đơn có thể áp dụng một mã khuyến mãi

Một mã khuyến mãi được áp dụng cho một hoặc nhiều hóa đơn

Sản phẩm - Hóa đơn Mỗi hóa đơn có một hoặc nhiều sản phẩm

Mỗi sản phẩm có thể thuộc một hoặc nhiều hóa đơn

Sản phẩm - Giá sản phẩm Một sản phẩm cómột và chỉ một mức giá tại một thời điểm Có thể có một hoặc nhiều sản phẩm cùng một mức giá

Dòng nhập - Nhà cung cấp Quán có thể nhập nguyên liệu từ nhiều nhà cung cấp khác nhau Một nhà cung cấp thực hiện cung cấp nguyên liệu cho quán cà phê

Danh mục nguyên vật liệu -

Dòng nhập nguyên vật liệu Mỗi Danh mục nguyên vật liệu dùng để nhập nhiều nguyên vật liệu Mỗi lần nhập nguyên vật liệu đều dựa trên một Danh mục nguyên vật liệu

Danh mục nguyên vật liệu -

Dòng xuất nguyên vật liệu Mỗi Danh mục nguyên vậtMỗi lần xuất kho nguyên vật liệu đều được báo cáo bằng một liệu có thể xuất nhiều nguyên vật liệu Danh mục nguyên vật liệu

Sản phẩm - Dòng xuất

nguyên vật liệu Một sản phẩm được sản xuất từ một lần xuất khoMỗi lần xuất kho có thể tạo ra nhiều loại sản phẩm Nhân viên - Dòng xuất

nguyên vật liệu Mỗi lần xuất kho sẽ có một nhân viên phụ trách chínhMỗi nhân viên có thể phụ trách một hoặc nhiều lần xuất kho Nhân viên - Dòng nhập

26

Nhân viên - Tồn kho Mỗi lần kiểm tra tồn kho, chỉ có một nhân viên kiểm tra Mỗi nhân viên có thể kiểm tra một hoặc nhiều lần tồn kho IV. Mô hình thực thể quan hệ

1. Mô hình thực thể quan hệ

Link hình ảnhchi tiết:Mô hình thực thể quan hệ

27 2. Mô hình ERD mức vật lý

Link hình ảnhchi tiết: Mô hình ERD mức vật lý

28 USE Csdl_rdm

GO

CREATE TABLE Employee_salary (

Id_nb_shif Int primary key , Total_nb_shift Smallint , Coefficients_salary Float , Into_money Decimal (9,3) )

GO

CREATE TABLE Employee (

Id_employee Int primary key , Id_nb_shif Int

, foreign key (Id_nb_shif) references Employee_salary , Name_employee Nvarchar (60) , Sex Bit , Identity_nb Numeric (12) , Phone_employee Numeric (12) , Address_employee Nvarchar (128) , Email_employee Nvarchar (60) , Position Nvarchar (128) , Date_to_working Date ) GO

CREATE TABLE Employee_shift (

Id_shift Int primary key , Name_shift Nvarchar (60) , Starttime Time , Endtime Time , Money_nb Decimal (9,3) ) GO

CREATE TABLE Shift_assignment (

Id_employee Int , Id_shift Int

29

, foreign key (Id_employee) references Employee , foreign key (Id_shift) references Employee_shift , Name_employee Nvarchar (60)

, Name_shift Nvarchar (60) )

GO

CREATE TABLE Customer_type (

Id_customertype Int primary key , Accumulated_points Tinyint , Customer_tp Nvarchar (60) )

GO

CREATE TABLE Customer (

Id_customer Int primary key , Id_customertype Int

, foreign key (Id_customertype) references Customer_type , Name_customer Nvarchar (60) , Identity_nb Numeric (12) , Phone_customer Numeric (12) , Address_customer Nvarchar (128) , Email_customer Nvarchar (60) , Total_transaction Decimal (9,3) ) GO

CREATE TABLE Product_price (

Id_price Int primary key , Price_unit Decimal (9,3) , Startdate_price Date , Enddate_price Date )

GO

CREATE TABLE Product (

Id_product Int primary key , Id_price Int

, foreign key (Id_price) references Product_price , Product_name Nvarchar (128)

30 CREATE TABLE Promotion

(

Id_promo Int primary key , Name_promo Nvarchar (128) , Startdate_promo Datetime , Enddate_promo Datetime )

GO

CREATE TABLE Promotion_bill (

Id_promo_bill Int primary key , Id_promo Int

, foreign key (Id_promo) references Promotion , Invoice_base_bill Nvarchar (128)

, Value_promo Decimal (9,3) )

GO

CREATE TABLE Promotion_product (

Id_promo_product Int primary key , Id_promo Int

, foreign key (Id_promo) references Promotion , Invoice_base_product Nvarchar (128)

) GO

CREATE TABLE Bill (

Id_bill Int primary key , Id_promo Int

, foreign key (Id_promo) references Promotion , Id_employee Int

, foreign key (Id_employee) references Employee , Id_customer Int

, foreign key (Id_customer) references Customer , Id_price Int

, foreign key (Id_price) references Product_price , Product_name Nvarchar (128)

31 , Customer_paid Decimal (9,3) , Othercosts Decimal (9,3) , Total Decimal (9,3) , Quantity Int ) GO

CREATE TABLE Bill_details (

Id_bill Int primary key references Bill , Product_name Nvarchar (128)

, Total Decimal (9,3) , Quantity Int

) GO

CREATE TABLE List_of_material (

Id_nvl Int primary key , Name_nvl Nvarchar (128) , Unit Nvarchar (20)

, Price_unit Decimal (9,3) )

GO

CREATE TABLE Material_norms (

Id_product Int primary key references Product , Name_nvl Nvarchar (128)

, Unit Nvarchar (128) , Quantity Int

) GO

CREATE TABLE Import_warehouse (

Id_import Int primary key , Id_nvl Int

, foreign key (Id_nvl) references List_of_material , Id_employee Int

, foreign key (Id_employee) references Employee , Date_import Datetime

, Name_nvl Nvarchar (128) , Unit Nvarchar (128) , Quantity_import Int

32 GO

CREATE TABLE Export_warehouse (

Id_export Int primary key , Id_nvl Int

, foreign key (Id_nvl) references List_of_material , Id_employee Int

, foreign key (Id_employee) references Employee , Id_product Int

, foreign key (Id_product) references Product , Date_export Datetime , Name_nvl Nvarchar (128) , Unit Nvarchar (20) , Quantity_export Int , Price_unit Decimal (9,3) , Price_total Decimal (9,3) ) GO

CREATE TABLE Supplier_contact (

Id_supplier Int primary key , Id_import Int

, foreign key (Id_import) references Import_warehouse , Name_supplier Nvarchar (128)

, Address_supplier Nvarchar (128) , Product_supplier Nvarchar (128) )

GO

CREATE TABLE Material_inventory (

Id_nvl Int primary key , Name_nvl Nvarchar (128) , Id_employee Int

, foreign key (Id_employee) references Employee , Quantity_inventory Int

, Unit Nvarchar (20) )

33 ** Các mối quan hệ được thể hiện:

Link hình ảnh chi tiết:Mô hình dữ liệu quan hệ

Hình 18: Mô hình dữ liệu quan hệ VI. Truy vấn

# Lọc ratên các sản phẩm có giá từ 40.000 trở lên và kích thước của sản phẩm là 'L' và ngày bắt đầu áp dụng mã là ngày 27/5/2022

SELECT p.Product_name FROM Product as p

INNER JOIN Product_price as pr ON p.Id_price = pr.Id_price

WHERE pr.Price_unit > 40000 AND p.Size = N'L' AND pr.Startdate_price = 27/5/2022

# Lọc ra tên sản phẩm, mã của sản phẩm mà tổng số lượng đã bán trong ngày 5/5/2022 là cao nhất

34

INNER JOIN Product_price as pr ON p.Id_price = pr.Id_price INNER JOIN Bill as b ON b.Id_price = pr.Id_price

WHERE b.Date_buy = 5/5/2022

GROUP BY p.Product_name, p.Id_product

SELECT * FROM LIST

WHERE LIST.SUM = ( SELECT Max(LIST.SUM) FROM LIST )

# Đếm số lượng nhân viên có tổng số ca làm việc lớn hơn 50 ca và đã vào làm được hơn 30 ngày tính từ ngày vào làm

SELECT em.Name_employee, SUM(esa.Total_nb_shift) as SUM FROM Employee as em INTO CountEm

INNER JOIN Employee_salary as esa ON em.Id_nb_shift = esa.Id_nb_shift WHERE DAY(GETDATE()) - DAY(em.Date_to_working) > 30

GROUP BY em.Name_employee

SELECT COUNT(*) FROM CountEm WHERE CountEm.SUM > 50

# Lọc ra danh sách các khách hàng có địa chỉ ở Quận 1, TP.HCM hoặc có hóa đơn lớn 1.000.000VNĐ kể từ ngày 26/5/2022 hoặc khách hàng cóđiểm tích lũy lớn hơn

0.

SELECT c.Id_customer, c.Name_customer FROM Customer as c

INNER JOIN Bill as b ON b.Id_customer = c.Id_customer

INNER JOIN Customer_type as ct ON ct.Id_customertype = b.Id_customertype

35

OR ( b.Total > 1.000.000 AND DAY(GETDATE()) - DAY(25/5/2022) >= 1) OR ct.Accumulated_point > 0

# Lọc ra những tên khách hàng có hóa đơn được khuyến mãi theo hình thức khuyến mãi theo sản phẩm, và có thời gian khuyến mãi là 3 ngày

SELECT c.Name_customer FROM Customer as c

INNER JOIN Bill as b ON c.Id_customer = b.Id_customer INNER JOIN Promotion as pr ON b.Id_promo = pr.Id_promo

INNER JOIN Promotion_bill as pr_b ON pr.Id_promo = pr_b.Id_promo WHERE DAY(pr.Enddate_promo) - DAY(pr.Startdate_promo) = 3

36

phần mềm quản lí vào trong các doanh nghiệp là một điều tất yếu. Phần mềm quản lý

quán cafe sẽ giúp giải quyết tất tần tật các nhu cầu quản lý trong quán cafe. Bằng cách áp dụng phần mềm vào quản lý, cửa hàng sẽ được vận hành nhanh hơn, đơn giản và chính xác hơn. Từ đó sẽ có nhiều thời gian để tìm kiếm khách hàng, có thời gian cho gia đình và các mối quan hệ khác.

Một phần của tài liệu Quản lý cơ sở dữ liệu quán cafe (Trang 28)

Tải bản đầy đủ (PDF)

(40 trang)