Access
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Access

Dự án cơ sở dữ liệu tiệm làm tóc

Cập nhật:ngày 22 tháng 1 năm 2018 bởi Richard Holowczak

Các tài liệu sau ghi lại việc thiết kế và phát triển một ứng dụng cơ sở dữ liệu để hỗ trợ một tiệm làm tóc nhỏ. Dự án bắt đầu với mô tả về doanh nghiệp và tiến hành thông qua mô hình khái niệm (E-R), mô hình logic (Quan hệ), mô hình vật lý và cuối cùng là triển khai ứng dụng cơ sở dữ liệu. Ghi chú (Bình luận) được cung cấp ở cuối mỗi phần để giải thích một số tính năng cụ thể của các bước đang được thực hiện.

Mục lục

Tôi. Tình hình kinh doanh
II. Mô hình ER sử dụng ký hiệu UML
III. Chuyển đổi sang mô hình quan hệ
IV. Chuẩn hóa
V. Tạo lược đồ cơ sở dữ liệu với SQL
VI. Ứng dụng cơ sở dữ liệu
VII. Kết luận

.

tôi. Tình huống kinh doanh

Công ty chúng tôi đã sở hữu và điều hành một tiệm làm tóc và làm móng ở khu trung tâm Manhattan trong 7 năm. Chúng tôi đã sử dụng bảng tính và sổ nhật ký giấy để theo dõi khách hàng, các cuộc hẹn và thanh toán. Chúng tôi muốn thay thế phương pháp theo dõi doanh nghiệp thủ công này bằng cơ sở dữ liệu.

Trong hoạt động kinh doanh của chúng tôi, Khách hàng đặt Hẹn với nhà tạo mẫu tóc yêu thích của họ (những người cắt và tạo kiểu tóc cho khách hàng) hoặc nhân viên khác và có thể tận hưởng một số Dịch vụ như cắt / tạo kiểu tóc cơ bản, màu tóc, highlight, uốn, khuôn mặt, Làm móng tay, móng chân,… Chúng ta cần theo dõi nguyên vật liệu (dầu gội, màu tóc) và thời gian hoàn thành mỗi dịch vụ. Mặc dù mỗi dịch vụ đều có giá tiêu chuẩn, nhưng các chương trình khuyến mãi và các yếu tố khác có thể ảnh hưởng đến giá thực tế mà Khách hàng áp dụng cho dịch vụ nhất định.

Chúng tôi cũng cần theo dõi Nhân viên của mình bao gồm địa chỉ nhà riêng, thông tin liên hệ và mức lương của họ. Chúng tôi cần theo dõi thông tin liên hệ của từng Khách hàng cũng như giới tính của họ. Đối với Cuộc hẹn, chúng tôi cần biết ngày giờ của cuộc hẹn và cuộc hẹn dành cho khách hàng nào.

Bình luận

Dựa trên mô tả ở trên, hãy xây dựng mô hình Mối quan hệ thực thể bằng cách sử dụng ký hiệu UML sẽ nắm bắt tất cả các nhu cầu dữ liệu của doanh nghiệp.

II. Mô hình ER sử dụng Ký hiệu UML

Dựa trên mô tả ở trên, chúng tôi phát triển mô hình Mối quan hệ thực thể sau sử dụng ký hiệu UML.

Bình luận

Điều chúng tôi thích ở mô hình này:

  • Tất cả các đường quan hệ đang ở vị trí ngang hoặc dọc. Không có dòng nào bị cắt ngang.
  • Tên thuộc tính được viết đúng cách và không có dấu cách trong tên. Không có chữ viết tắt nào được sử dụng.
  • Mỗi mối quan hệ có hai cụm từ mà từ đó chúng ta có thể tạo các câu quan hệ (xem phần tiếp theo).
  • Sơ đồ cũng có "chú giải" ở góc trên bên phải để chúng tôi có thể cho biết sơ đồ đại diện cho điều gì và ai đã sửa đổi sơ đồ lần cuối.

Câu quan hệ

Một Khách hàng có thể là thực hiện một hoặc nhiều Cuộc hẹn

Một Cuộc hẹn phải là đặt trước cho một và chỉ một Khách hàng

Một SalonService có thể là một dịch vụ được hiển thị dưới dạng một hoặc nhiều ServiceRendered

Một ServiceRendered phải là kết xuất của một và chỉ một SalonService

Một nhân viên có thể là kết xuất một hoặc nhiều ServiceRendered

Một ServiceRendered phải là được hiển thị bởi một và chỉ một Nhân viên

Một Cuộc hẹn có thể là đặt trước để cung cấp một hoặc nhiều ServiceRendered

Một ServiceRendered phải là một dịch vụ cụ thể được hiển thị trong một và chỉ một Cuộc hẹn

Bình luận

Các câu quan hệ phải có ý nghĩa. Trong ví dụ này, các cụm động từ được gạch dưới. Tên thực thể được in đậm. Số lượng tối thiểu ( có thể là cho 0 và phải là cho 1) được viết nghiêng. Số lượng tối đa được viết là “một hoặc nhiều” cho * và “một và chỉ một” cho 1.

Với mô hình ER đã hoàn thành, chúng tôi chuyển sang bước tiếp theo - chuyển đổi mô hình ER khái niệm sang mô hình Quan hệ lôgic.

III. Chuyển đổi sang mô hình quan hệ

Bước tiếp theo là Chuyển đổi sơ đồ Mối quan hệ Thực thể sang Mô hình Quan hệ. Trong bước này, Số nhận dạng trong Thực thể trở thành Chìa khóa trong Mối quan hệ. Mối quan hệ Một-Nhiều dẫn đến việc một khóa ngoại được sao chép từ Mặt một sang Mặt nhiều của mối quan hệ.

Khách hàng (CustomerID (key), FirstName, LastName, PhoneNumber, Street, City, State, ZipCode)

SalonService (ServiceID (key), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials)

Nhân viên (EmployeeID (key), FirstName, LastName, Street, City, State, ZipCode, PayRate)

Cuộc hẹn (AppointmentID (key), AppointmentDate, AppotinmentTime, CustomerID (fk))

ServiceRendered (AppointmentID (fk) (key), LineItemNumber (key), ServiceID (fk), ServiceExtendedPrice, EmployeeID (fk))

Đây là “tập hợp quan hệ ban đầu”.

Bình luận

  • Lưu ý rằng ServiceRendered thực thể từ mô hình ER là ID-Dependent, nghĩa là nó cần một thuộc tính ngoài LineItemNumber để tạo thành một khóa tổng hợp.
  • Các phím được hiển thị với ký hiệu (key) và các khóa ngoài được hiển thị với ký hiệu (fk).

Bước tiếp theo là chuẩn hóa tập hợp quan hệ ban đầu.

IV. Chuẩn hóa

Bước tiếp theo là bình thường hóa mối quan hệ.

Các bước cần thực hiện cho mỗi mối quan hệ là:

  1. Viết ra mối quan hệ bao gồm tất cả các tên thuộc tính. Cho biết khóa và khóa ngoại.
  2. Cung cấp một số dữ liệu mẫu cho mối quan hệ.
  3. Nêu Chìa khóa cho mối quan hệ và viết ra tất cả Sự phụ thuộc chức năng .
  4. Xem qua các định nghĩa của từng biểu mẫu thông thường bắt đầu với 1NF và lên đến BCNF (hoặc 3NF tùy thuộc vào yêu cầu dự án của bạn).
  5. Nếu một quan hệ đáp ứng định nghĩa của một dạng chuẩn, hãy chuyển sang dạng chuẩn cao hơn tiếp theo.
  6. Nếu một quan hệ không đáp ứng được định nghĩa của dạng chuẩn (ví dụ:nó chứa phụ thuộc khóa một phần hoặc chứa phụ thuộc bắc cầu), thì hãy tách quan hệ thành hai quan hệ mới.
    Bắt đầu quá trình chuẩn hóa ngay từ đầu với mỗi mối quan hệ trong số hai mối quan hệ mới này.

Quan hệ khách hàng

Khách hàng (CustomerID (key), FirstName, LastName, CustPhone, Street, City, State, ZipCode, Gender)

Dữ liệu mẫu

CustomerID FirstName LastName Số điện thoại Phố Thành phố Bang Mã ZipCode Giới tính
C101 Elia Fawcett 201-222-2222 8989 Smith Rd Garfield NJ 07026 F
C102 Ishwarya Roberts 201-222-3333 65 Hope Rd Garfield NJ 07026 M
C103 Frederic Fawcett 201-222-2222 8989 Smith Rd Garfield NJ 07026 M
C104 Goldie Montand 201-222-4321 5235 Ln gỗ lim Garfield NJ 07026 F
C105 Dheeraj Alexander 201-222-4545 666 22nd Ave Bergenfield NJ 07621 M
C106 Josie Davis 201-333-6789 4200 Bluejay Ave Bergenfield NJ 07621 F
C107 Faye Glenn 201-333-4242 1522 Main St Công viên bên vách đá NJ 07010 F
C108 Lauren Hershey 201-444-1313 2360 Maxon Rd Englewood NJ 07631 F

Khóa:ID khách hàng

FD1:CustomerID -> FirstName, LastName, PhoneNumber, Street, City, State, ZipCode, Gender

FD2:Mã ZipCode -> Thành phố, Tiểu bang

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Tồn tại phụ thuộc bắc cầu:CustomerID -> ZipCode và ZipCode -> City, State

Giải pháp:Tách quan hệ Khách hàng thành hai quan hệ mới có tên là CustomerData và ZipCodes:

CustomerData (CustomerID (key), FirstName, LastName, CustPhone, Street, ZipCode (fk), Gender)

Khóa:ID khách hàng

FD1:CustomerID -> FirstName, LastName, PhoneNumber, Street, ZipCode (fk), Gender

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Mã ZipCodes (Mã ZipCode (khóa), Thành phố, Tiểu bang)

Khóa:Mã ZipCode

FD1:Mã ZipCode -> Thành phố, Tiểu bang

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Mối quan hệ với SalonService

SalonService (ServiceID (khóa), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials)

Dữ liệu mẫu:

ServiceID ServiceDuration Giá dịch vụ Vật liệu Dịch vụ
SV101 Cắt tóc nam 20 22,00 Không có
SV102 Cắt tóc cho phụ nữ 30 32,00 Không có
SV103 Cắt tóc cho trẻ em 20 15,00 Không có
SV104 Màu tóc của phụ nữ 60 76,00 Màu, Thuốc thử, Găng tay, Bàn chải thuốc thử, Giấy bạc
SV105 Kiểu tóc của phụ nữ 45 56,00 Dầu gội, Dầu xả
SV106 Kiểu tóc nam 45 46,00 Dầu gội, Dầu xả

Khóa:ServiceID

FD1:ServiceID -> ServiceName, ServiceDuration, ServicePrice, ServiceMaterials

1NF:ServiceMaterials có thể được coi là một thuộc tính đa giá trị. Trong trường hợp này SalonService không nằm trong 1NF.

Giải pháp:Tách ServiceMaterials thành một mối quan hệ riêng biệt.

Tuy nhiên, đối với ví dụ này, chúng tôi sẽ giữ ServiceMaterials như một thuộc tính của quan hệ SalonService.

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Mối quan hệ của nhân viên

Nhân viên (EmployeeID (khóa), FirstName, LastName, Street, City, State, ZipCode, PayRate)

ID nhân viên FirstName LastName Phố Thành phố Bang Mã ZipCode Tỷ lệ trả tiền
E300 Niềm vui Aveda 46 Đại lộ Easton Garfield NJ 07026 18,00
E400 Geraldo Geraldo 12 Fortis Blvd. Đúng cách. 2A Garfield NJ 07026 22,00
E500 Koy Petruzzio 70 Wilard St. Garfield NJ 07026 20,00
E600 Landry Monroe 73 Holly Terrace Công viên bên vách đá NJ 07010 18,00
E700 Pat Gửi lại 2 Lincoln Place Công viên bên vách đá NJ 07010 23,00
E800 Mùa đông Thuộc da 215 Elm Ave Teaneck NJ 07665 23,00

Khóa:EmployeeID

FD1:EmployeeID -> FirstName, LastName, Street, City, State, ZipCode, PayRate

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Tồn tại phụ thuộc bắc cầu:EmployeeID -> ZipCode và ZipCode -> City, State

Giải pháp:Tách quan hệ Khách hàng thành hai quan hệ mới có tên là EmployeeData và ZipCodes:

EmployeeData (EmployeeID (key), FirstName, LastName, Street, ZipCode (fk), PayRate)

Khóa:EmployeeID

FD1:EmployeeID -> FirstName, LastName, Street, ZipCode (fk), PayRate

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Lưu ý:Chúng tôi đã có mối quan hệ ZipCodes từ khi mối quan hệ Khách hàng được tách ra. Vì vậy, chúng tôi sử dụng lại quan hệ ZipCodes đó. Không cần tạo mối quan hệ ZipCodes thứ hai.

Mối quan hệ bổ nhiệm

Cuộc hẹn (ID bổ nhiệm (khóa), Ngày hẹn, Thời gian hẹn, ID khách hàng (fk))

Dữ liệu mẫu:

ID bổ nhiệm Ngày bổ nhiệm Thời gian hẹn ID khách hàng
A400 22/10/2017 11:00:00 SA C101
A401 11/6/2017 12:45:00 CH C102
A402 12/7/2017 2:00:00 chiều C106
A403 18/12/2017 3:30:00 chiều C106
A404 21/12/2017 11:30:00 SA C108
A405 31/12/2017 10:00:00 SA C107
A406 1/11/2018 3:15:00 chiều C103
A407 1/12/2018 2:30:00 chiều C104
A408 22/01/2018 4:00:00 chiều C105

Khóa:ID bổ nhiệm

FD1:AppointmentID -> Ngày bổ nhiệm, AppotinmentTime, CustomerID (fk)

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Mối quan hệ ServiceRendered

ServiceRendered (AppointmentID (fk) (key), LineItemNumber (key), ServiceID (fk), ServiceExtendedPrice, EmployeeID (fk))

Dữ liệu mẫu:

ID bổ nhiệm LineItemNumber ID dịch vụ ServiceExtendedPrice ID nhân viên
A400 1 SV104 75,00 E400
A400 2 SV102 25,00 E400
A401 1 SV101 22,00 E500
A402 1 SV104 75,00 E600
A402 2 SV102 30,00 E800
A403 1 SV105 50,00 E300
A404 1 SV105 55,00 E300
A405 1 SV102 30,00 E700
A405 2 SV104 70,00 E700
A405 3 SV105 50,00 E700

Khóa:ID bổ nhiệm, Mã số hàng

FD1:AppointmentID, LineItemNumber -> ServiceID (fk), ServiceExtendedPrice, EmployeeID (fk)

1NF:Đáp ứng định nghĩa của một quan hệ

2NF:Không có phụ thuộc chính một phần nào

3NF:Không có phụ thuộc bắc cầu

BCNF:Tất cả các yếu tố quyết định đều là khóa ứng viên

Tập hợp các mối quan hệ cuối cùng

Khách hàng (CustomerID (key), FirstName, LastName, PhoneNumber, Street, ZipCode (fk), Gender)

Mã Zip (Mã ZipCode (khóa), Thành phố, Tiểu bang)

SalonService (ServiceID (key), ServiceName, ServiceDuration, ServicePrice, ServiceMaterials)

Nhân viên (EmployeeID (key), FirstName, LastName, Street, ZipCode (fk), PayRate)

Cuộc hẹn (AppointmentID (key), AppointmentDate, AppotinmentTime, CustomerID (fk))

ServiceRendered (AppointmentID (fk) (key), LineItemNumber (key), ServiceID (fk), ServiceExtendedPrice, EmployeeID (fk))

Bình luận

  • Lưu ý rằng chỉ một quan hệ ZipCodes là bắt buộc. Nó được chia sẻ với cả quan hệ Khách hàng và Nhân viên.
  • Như đã lưu ý trước đây, thuộc tính ServiceMaterials chưa được chuẩn hóa trong ví dụ này. Có lẽ nó có thể được thực hiện trong một nhiệm vụ hoặc cải tiến mô hình trong tương lai.

Bây giờ các mối quan hệ đã được chuẩn hóa, lược đồ có thể được tạo trong hệ thống quản lý cơ sở dữ liệu bằng cách sử dụng ngôn ngữ truy vấn có cấu trúc (SQL).

V. Tạo lược đồ cơ sở dữ liệu với ngôn ngữ truy vấn có cấu trúc

Tạo một bảng trong cơ sở dữ liệu cho từng quan hệ trong tập hợp quan hệ cuối cùng.

Mã SQL sau tạo sáu bảng và thêm ràng buộc CHÍNH CHÍNH cho mỗi bảng:

 TẠO BẢNG ZipCodes (zipcode VARCHAR (12) NOT NULL, city VARCHAR (36), state VARCHAR (4), CONSTRAINT pk_zipcodes PRIMARY KEY (zipcode)) TẠO BẢNG Khách hàng (CustomerID VARCHAR (10) NOT NULL, FirstName VARCHAR ( 35), VARCHAR tên cuối (35), VARCHAR số điện thoại (15), VARCHAR đường phố (35), ZipCode VARCHAR (12), VARCHAR giới tính (2), CONSTRAINT pk_customer KHÓA CHÍNH (ID khách hàng)) TẠO BẢNG HẸ NOT NULL, AppointmentDateTime DATE, CustomerID VARCHAR (10) NOT NULL, CONSTRAINT pk_appointment PRIMARY KEY (AppointmentID)) TẠO BẢNG SalonService (ServiceID VARCHAR (10) NOT NULL, ServiceName VARCHAR (35), ServiceDuration VARER INTEGER, ServicePrice Number, ServiceMaterial ), CONSTRAINT pk_salonservice KEY CHÍNH (ServiceID)) TẠO BẢNG Nhân viên (BIẾN SỐ NHÂN VIÊN (10) KHÔNG PHẢI N ULL, FirstName VARCHAR (35), LastName VARCHAR (25), Street VARCHAR (45), ZipCode VARCHAR (12), PayRate NUMBER, CONSTRAINT pk_employee PRIMARY KEY (EmployeeID)) CREATE TABLE ServiceRendered (AppointmentID VARCHAR (10) NOT NULL, LineItemNumber) INTEGER NOT NULL, ServiceID VARCHAR (10) NOT NULL, ServiceExtendedPrice NUMBER, EmployeeID VARCHAR (10) NOT NULL, CONSTRAINT pk_ServiceRendered PRIMARY KEY (AppointmentID, LineItemNumber)) 

Thêm khóa ngoài

Các mã SQL sau thêm các ràng buộc NGOẠI KHÓA để liên kết các bảng với nhau:

 BẢNG BÁO GIÁ Khách hàng ADD CONSTRAINT fk_customer_zipcodes FOREIGN KEY (ZipCode) TÀI LIỆU THAM KHẢO Mã ZipCode (Mã ZipCode) BẢNG ALTER Nhân viên ADD CONSTRAINT fk_employee_zipcodes FOREIGN KEY (ZipCode) TÀI LIỆU THAM KHẢO Mã ZipCode (Mã ZipCode) . / pre> 

Bình luận về SQL:

  • Hầu hết các DBMS sẽ lưu trữ NGÀY và GIỜ trong cùng một cột. Vì vậy, Ngày bổ nhiệm và Thời gian bổ nhiệm đã được kết hợp thành một cột trong cơ sở dữ liệu có tên là Thời gian bổ nhiệm
  • Khóa và Khóa ngoài phải có cùng tên và kiểu dữ liệu chính xác. Ví dụ:CustomerID chính là VARCHAR (10) trong bảng Khách hàng và cũng là VARCHAR (10) trong bảng Cuộc hẹn.
  • Các ràng buộc được đặt tên có ý nghĩa như pk_customer cho khóa chính và fk_customer_zipcodes cho khóa ngoại.
  • Các cột như Số điện thoại và Mã ZipCode phải sử dụng kiểu dữ liệu VARCHAR. Nếu sử dụng kiểu dữ liệu NUMBER hoặc INTEGER thì các số 0 ở đầu sẽ bị thiếu.

Sau khi tạo các bảng và thêm các ràng buộc khóa ngoại, giản đồ cơ sở dữ liệu bây giờ trông giống như sau:

Chế độ xem mối quan hệ

Sử dụng Dạng xem Mối quan hệ trong Công cụ Cơ sở dữ liệu, chúng ta có thể thấy các mối quan hệ (khóa ngoại) giữa các bảng:

Thêm dữ liệu vào bảng bằng câu lệnh SQL INSERT

 CHÈN VÀO GIÁ TRỊ ZipCodes ('07026', 'Garfield', 'NJ'); CHÈN VÀO GIÁ TRỊ ZipCodes ('07621', 'Bergenfield', 'NJ'); CHÈN VÀO GIÁ TRỊ ZipCodes ('07010', 'Cliffside Park ',' NJ '); CHÈN VÀO GIÁ TRỊ ZipCodes (' 07631 ',' Englewood ',' NJ '); CHÈN VÀO GIÁ TRỊ ZipCodes (' 07665 ',' Teaneck ',' NJ '); CHÈN VÀO GIÁ TRỊ CỦA KHÁCH HÀNG (' C101 ',' Elia ',' Fawcett ',' 201-222-2222 ',' 8989 Smith Rd ',' 07026 ',' F '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C102 ',' Ishwarya ',' Roberts ' , '201-222-3333', '65 Hope Rd ',' 07026 ',' M '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C103 ',' Frederic ',' Fawcett ',' 201-222-2222 ',' 8989 Smith Rd ',' 07026 ',' M '); CHÈN VÀO GIÁ TRỊ CỦA KHÁCH HÀNG (' C104 ',' Goldie ',' Montand ',' 201-222-4321 ',' 5235 Ironwood Ln ',' 07026 ',' F '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C105 ',' Dheeraj ',' Alexander ',' 201-222-4545 ',' 666 22nd Ave ',' 07621 ',' M '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C106 ',' Josie ',' Davis ',' 201-333-6789 ',' 4200 Bluejay Ave ',' 07621 ',' F '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C107 ',' Faye ',' Glenn ' , '201-333-4242', '1 522 Main St ',' 07010 ',' F '); CHÈN VÀO GIÁ TRỊ Khách hàng (' C108 ',' Lauren ',' Hershey ',' 201-444-1313 ',' 2360 Maxon Rd ',' 07631 ',' F '); CHÈN VÀO GIÁ TRỊ SalonService (' SV101 ',' Cắt tóc nam ', 20, 22,' Không có '); CHÈN VÀO GIÁ TRỊ SalonService (' SV102 ',' Cắt tóc cho nữ ', 30, 32 , 'Không có'); CHÈN VÀO GIÁ TRỊ Dịch vụ Salon ('SV103', 'Cắt tóc trẻ em', 20, 15, 'Không có'); CHÈN VÀO GIÁ TRỊ Dịch vụ Salon ('SV104', 'Màu tóc của Phụ nữ', 60, 76 , 'Màu, Thuốc thử, Găng tay, Bàn chải thuốc thử, Giấy bạc'); CHÈN VÀO GIÁ TRỊ Dịch vụ Salon ('SV105', 'Kiểu tóc của Phụ nữ', 45, 56, 'Dầu gội, Dầu xả'); CHÈN VÀO GIÁ TRỊ Dịch vụ Salon (' SV106 ',' Kiểu tóc nam ', 45, 46,' Dầu gội, dầu xả '); CHÈN VÀO GIÁ TRỊ Nhân viên (' E300 ',' Joy ',' Aveda ', '46 Easton Ave.', '07026' , 18); CHÈN VÀO GIÁ TRỊ Nhân viên ('E400', 'Geraldo', 'Geraldo', '12 Fortis Blvd. Đúng cách. 2A ',' 07026 ', 22); CHÈN VÀO GIÁ TRỊ Nhân viên (' E500 ',' Koy ',' Petruzzio ', '70 Wilard St.', '07026', 20); CHÈN VÀO GIÁ TRỊ Nhân viên ('E600', 'Landry', 'Monroe', '73 Holly Terrace ',' 07010 ', 18); CHÈN VÀO GIÁ TRỊ Nhân viên (' E700 ',' Pat ',' Reese ',' 2 Lincoln Place ',' 07010 ', 23); CHÈN VÀO GIÁ TRỊ NHÂN VIÊN ('E800', 'Winter', 'Tanner', '215 Elm Ave', '07665', 23); CHÈN VÀO GIÁ TRỊ Bổ nhiệm ('A400', '10/22/2017 11:00:00 AM ',' C101 '); CHÈN VÀO GIÁ TRỊ Cuộc hẹn (' A401 ', '11 / 06/2017 12:45:00 PM', 'C102'); CHÈN VÀO GIÁ TRỊ Cuộc hẹn ('A402', '12 / 07 / 2017 02:00:00 PM ',' C106 '); CHÈN VÀO GIÁ TRỊ Cuộc hẹn (' A403 ', '12 / 18/2017 03:30:00 PM', 'C106'); CHÈN VÀO GIÁ TRỊ Cuộc hẹn ('A404 ', '12 / 21/2017 11:30:00 AM', 'C108'); CHÈN VÀO GIÁ TRỊ Cuộc hẹn ('A405', '12 / 31/2017 10:00:00 AM ',' C107 '); CHÈN VÀO GIÁ TRỊ Cuộc hẹn ('A406', '01 / 11/2018 03:15:00 PM ',' C103 '); CHÈN VÀO GIÁ TRỊ Cuộc hẹn (' A407 ',' 01/12/2018 02:30:00 PM ', 'C104'); CHÈN VÀO GIÁ TRỊ Cuộc hẹn ('A408', '0 1/22/2018 04:00:00 PM ',' C105 '); CHÈN VÀO GIÁ TRỊ được gửi thêm của dịch vụ (' A400 ', 1,' SV104 ', 75,' E400 '); CHÈN VÀO GIÁ TRỊ được gửi thêm của dịch vụ (' A400 ', 2 , 'SV102', 25, 'E400'); CHÈN VÀO GIÁ TRỊ được gửi thêm vào dịch vụ ('A401', 1, 'SV101', 22, 'E500'); CHÈN VÀO GIÁ TRỊ được gửi thêm vào dịch vụ ('A402', 1, 'SV104', 75 , 'E600'); INSERT INTO ServiceRendered VALUES ('A402', 2, 'SV102', 30, 'E800'); CHÈN VÀO GIÁ TRỊ ServiceRendered ('A403', 1, 'SV105', 50, 'E300'); CHÈN VÀO GIÁ TRỊ được gửi thêm vào dịch vụ ('A404', 1, 'SV105', 55, 'E300'); CHÈN VÀO GIÁ TRỊ được gửi thêm dịch vụ ('A405', 1, 'SV102', 30, 'E700'); CHÈN VÀO GIÁ TRỊ được gửi thêm dịch vụ (' A405 ', 2,' SV104 ', 70,' E700 '); CHÈN VÀO GIÁ TRỊ được gửi thêm vào dịch vụ (' A405 ', 3,' SV105 ', 50,' E700 '); 

Bình luận về Mẫu dữ liệu

  • Chúng tôi chỉ thêm đủ dữ liệu để có thể kiểm tra mối quan hệ giữa các bảng và cung cấp cho các nhà phát triển ứng dụng thứ gì đó để làm việc.
  • Hãy cẩn thận về thứ tự mà dữ liệu được thêm vào. Ví dụ:trước tiên, tất cả các Mã ZipCode cần phải được chèn trước khi Khách hàng hoặc Nhân viên (cả hai đều sử dụng Mã ZipCode làm khóa ngoại) có thể được chèn vào.
  • Khi thêm dữ liệu VARCHAR với dấu ngoặc kép được nhúng, hãy sử dụng hai dấu ngoặc kép cùng nhau. ví dụ:"Kiểu tóc dành cho phụ nữ"
  • Tại thời điểm này, lược đồ cơ sở dữ liệu đã sẵn sàng để các nhà phát triển ứng dụng bắt tay vào thiết kế các biểu mẫu, báo cáo và truy vấn.

Bây giờ lược đồ cơ sở dữ liệu đã được tạo và được điền với một số dữ liệu mẫu, ứng dụng cơ sở dữ liệu có thể được phát triển.

VI. Ứng dụng cơ sở dữ liệu

Ứng dụng cơ sở dữ liệu bao gồm một tập hợp các Biểu mẫu, Báo cáo và Truy vấn được liên kết với nhau trên Biểu mẫu Điều hướng.

Biểu mẫu dẫn hướng là biểu mẫu đầu tiên xuất hiện khi cơ sở dữ liệu được mở.

Biểu mẫu điều hướng

Các biểu mẫu và báo cáo nhập dữ liệu khác nhau có thể được hiển thị bằng cách nhấp vào lựa chọn ở phía bên trái.

Biểu mẫu nhập dữ liệu khách hàng

Biểu mẫu Nhập dữ liệu khách hàng được sử dụng để tra cứu khách hàng hiện tại và nhập thông tin khách hàng mới. Các trường Thành phố và Tiểu bang được điền tự động bằng cách chọn Mã ZipCode tạo thành Hộp Tổ hợp. Biểu mẫu có một số mã VBA tùy chỉnh để chuyển đổi Họ và Tên thành chữ hoa và để tạo ID khách hàng mới, duy nhất khi trường CustomerID trống xuất hiện sau khi tạo một bản ghi mới.

Biểu mẫu nhập dữ liệu dịch vụ thẩm mỹ viện

Biểu mẫu Nhập dữ liệu dịch vụ thẩm mỹ viện được sử dụng để truy vấn, cập nhật và thêm các dịch vụ thẩm mỹ viện mới.

Biểu mẫu nhập dữ liệu cuộc hẹn

Biểu mẫu Nhập dữ liệu cuộc hẹn được sử dụng để tạo cuộc hẹn mới cho khách hàng. Như với biểu mẫu Khách hàng, có thể tạo ID cuộc hẹn mới bằng cách nhấp vào trường ID cuộc hẹn trống sau khi tạo bản ghi mới. Khách hàng có thể được chọn từ hộp kết hợp ID khách hàng như được hiển thị bên dưới:

Nếu đây là Khách hàng mới đang đặt lịch hẹn, người dùng có thể nhấp vào nút Khách hàng mới để hiển thị biểu mẫu Nhập dữ liệu khách hàng. Sau khi thông tin của khách hàng mới được lưu, người dùng có thể quay lại biểu mẫu Nhập dữ liệu cuộc hẹn và thực hiện cuộc hẹn.

Mẫu lịch hẹn và dịch vụ

Mục đích của biểu mẫu này là nhập các dịch vụ khác nhau liên quan đến một cuộc hẹn. Biểu mẫu này cũng có thể được sử dụng để tạo hóa đơn cho khách hàng. Dịch vụ và Nhân viên có thể được chọn từ các hộp kết hợp tương ứng của họ như được hiển thị bên dưới:

Báo cáo Tổng số Cuộc hẹn với Khách hàng

Báo cáo này cung cấp bản tóm tắt về số cuộc hẹn và tổng số tiền mà mỗi khách hàng đã chi tiêu.

Dựa trên truy vấn:

 CHỌN Customer.CustomerID, FirstName, LastName, SUM (q.TotalSpent) AS TotalSpent, COUNT (q.AppointmentID) AS NumberOfAppointmentsFROM Khách hàng, Cuộc hẹn, Query_Total_Spent_Each_Appointment AS qWHERE Customer.CustomerID =Appointment.CustomerID AND AppointmentID =q. CustomerIDGROUP BY Customer.CustomerID, FirstName, LastNameORDER BY LastName, FirstName; 

Và truy vấn Total_Spent_Each_Appointment

 CHỌN Cuộc hẹn.AppointmentID, SUM (ServiceExtendedPrice) AS TotalSpentFROM Cuộc hẹn, ServiceRenderedWHERE Cuộc hẹn.AppointmentID =ServiceRendered. 

Báo cáo dịch vụ và chiết khấu

Báo cáo này hiển thị từng dịch vụ với tổng giá dịch vụ thông thường, giá mở rộng và chỉ báo mức chiết khấu được áp dụng cho các dịch vụ đã cung cấp trong quá khứ.

Dựa trên truy vấn:

 CHỌN SalonService.ServiceID, ServiceName, SUM (ServicePrice) AS TotalServicePrice, SUM (ServiceExtendedPrice) AS TotalExtPrice, FORMAT (1.0 - (SUM (ServiceExtendedPrice) / SUM (ServicePrice)), "0.00%") AS Giảm giáFROM SalonService, ServiceRenderedWHERE SalonService.ServiceID =ServiceRendered.ServiceIDGROUP BY SalonService.ServiceID, ServiceNameORDER BY SalonService.ServiceID, ServiceName; 

Báo cáo địa chỉ khách hàng

Báo cáo này hiển thị tên và địa chỉ đầy đủ của từng Khách hàng.

VII. Kết luận

Việc phát triển một ứng dụng cơ sở dữ liệu tuân theo một vòng đời phát triển hệ thống bắt đầu bằng mô hình hóa khái niệm và chuyển qua một tập hợp các bước có cấu trúc bao gồm mô hình hóa logic, chuẩn hóa, triển khai vật lý và phát triển ứng dụng. Ví dụ về dự án Salon tóc minh họa từng bước chính này. Tuy nhiên một số chi tiết đã không được ghi lại đầy đủ. Ví dụ:một số công việc bổ sung có thể được yêu cầu để bình thường hóa mối quan hệ Dịch vụ thẩm mỹ viện để tính đến các vật liệu khác nhau được sử dụng cho mỗi dịch vụ. Các chi tiết triển khai Ứng dụng bổ sung như mã VBA khác và các mô tả chi tiết hơn về việc sử dụng từng biểu mẫu và báo cáo cũng có thể được thêm vào.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mở hoặc Liên kết Văn bản hoặc Excel dưới dạng Nguồn Dữ liệu trong Microsoft Access

  2. Cách liên kết một bảng với cơ sở dữ liệu phụ trợ trong Access 2016

  3. 10 Mẹo Microsoft Access để tạo các truy vấn chọn lọc

  4. Hướng dẫn điều khiển Activex ListView-01

  5. Tôi có nên sử dụng Macro hoặc Mã VBA không?