SƠ ĐỒ TIẾN TRÌNH

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 46)

Hình 3.11 Sơ Đồ Tiến Trình Của Nhà Cung Cấp 3.3.2 SơĐồ Tiến Trình Của Món Ăn Hình 3.12 SơĐồ Tiến Trình Của Món Ăn

3.3.3 Đồ Tiến Trình Của Thông Tin Phản Hồi

Hình 3.13 SơĐồ Tiến Trình Của Thông Tin Phản Hồi

3.4 MÔ HÌNH THỰC THỂ KẾT HỢP Nhà Cung Cấp Phân Loại Nhà Cung Cấp Khu Vực Nhà Cung Cấp Thuôc 1 n 1 n 1 Ban Quản Trị Có Có Có n Món Ăn Thuộc n 1 Có Thuộc Tin Tức Phân Loại Tin Tức 1 n Phản Hồi Từ Thực Khách 1 1 n n Có Phân Loại Món Ăn Hình 3.14 Sơđồ quan hệ thực thể

3.5 MÔ HÌNH DỮ LIỆU QUAN HỆ

Cơ sở dữ liệu có cấu trúc như sau:

3.5.1 Bảng PhanLoaiNCC

PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC)

Đây là bảng lưu trữ dữ liệu về phân loại nhà cung cấp, mỗi một nhà cung cấp thuộc một loại nhà cung cấp.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaLoaiNCC Tinyint Mã loại nhà cung cấp 2 TenLoaiNCC Nvarchar Tên loại nhà cung cấp

Bảng 1: PhanLoaiNCC

3.5.2 Bảng KhuVucNCC

KhuVucNCC(MaKhuVuc, TenKhuVuc)

Đây là bảng lưu trữ dữ liệu về khu vực nhà cung cấp.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaKhuVuc Tinyint Mã Khu Vực

2 TenKhuVuc Nvarchar Tên Khu Vực Bảng 2: KhuVucNCC

3.5.3 Bảng NhaCungCap

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Đây là bảng lưu trữ dữ liệu về thông tin nhà cung cấp.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaNhaCungCap Int Mã nhà cung cấp

2 MaKhuVuc Tinyint Mã khu vực

3 MaLoaiNCC Tinyint Mã loại nhà cung cấp

4 TenNCC Nvarchar Tên nhà cung cấp

5 TenDangNhap Varchar Tên đăng nhập

6 MatKhau Varchar Mật khẩu

7 DiaChiNCC Nvarchar Địa chỉ nhà cung cấp 8 SoDienThoai Varchar Sốđiện thoại

9 DiaChiEmail Varchar Địa chỉ Email 10 GioiThieu Nvarchar Giới thiệu (adsbygoogle = window.adsbygoogle || []).push({});

11 HinhAnh Varchar Hình ảnh

12 CauHoiBiMat Nvarchar Câu hỏi bí mật 13 CauTraLoi Nvarchar Câu trả lời 14 NgayDangKy Datetime Ngày đăng ký

15 TrangThai Tinyint Trạng thái

Bảng 3: Nhà cung cấp

3.5.4 Bảng PhanLoaiMonAn

PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn )

Đây là bảng lưu trữ dữ liệu phân loại món ăn. Nó cung cấp thể loại cho các món ăn.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaLoaiMonAn Tinyint Mã loại món ăn 2 TenLoaiMonAn Nvarchar Tên loại món ăn

Bảng 4: Phân loại món ăn

3.5.5 Bảng MonAn

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

Đây là bảng lưu trữ dữ liệu về món ăn, cho biết thông tin đầy đủ và chi tiết đến các món ăn.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaMonAn Int Mã món ăn

2 MaNhaCungCap Int Mã nhà cung cấp

3 MaLoaiMonAn Tinyint Mã loại món ăn

4 TenMonAn Nvarchar Tên món ăn

5 HinhAnh Varchar Hình ảnh

6 GioiThieu Nvarchar Giới thiệu 7 NgayDangBai Datetime Ngày đăng bài

8 TrangThai Bit Trạng thái

Bảng 5 : Món ăn

3.5.6 Bảng PhanLoaiTinTuc

PhanLoaiTinTuc(MaLoaiTT, TenLoaiTT )

Đây là bảng lưu trữ dữ liệu loại tin tức.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaLoaiTT Tinyint Mã loại tin tức 2 TenLoaiTT Nvarchar Tên loại tin tức

Bảng 6: Phân loại tin tức

3.5.7 Bảng TinTuc (adsbygoogle = window.adsbygoogle || []).push({});

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin )

Đây là bảng lưu trữ dữ liệu về tin tức.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaTinTuc Int Mã tin tức

2 MaLoaiTT Tinyint Mã loại tin tức

3 TieuDe Nvarchar Tiêu đề

4 NoiDung Nvarchar Nội dung 5 NgayDangTin Datetime Ngày đăng tin

Bảng 7: Tin tức

3.5.8 Bảng BanQuanTri

BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri )

Đây là bảng lưu trữ dữ liệu về ban quản trị.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaQuanTri Int Mã quản trị

2 TenDangNhap Varchar Tên đăng nhập

3 MatKhau Varchar Mật khẩu

4 HoTen Nvarchar Họ tên

5 DiaChi Nvarchar Địa chỉ

6 SoDiaChi Varchar Sốđiện thoại 7 DiaChiEmail Varchar Địa chỉ Email 8 LoaiQuanTri Bit Loại quản trị

Bảng 8: Ban quản trị

3.5.9 Bảng PhanHoiTuThucKhach

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui, TrangThai) Đây là bảng lưu trư dữ liệu về phản hồi từ thực khách.

STT Thuộc tính Kiểu dữ liệu Diễn giải

1 MaPhanHoi Int Mã phản hồi

2 MaNhaCungCap Int Mã nhà cung cấp

3 MaQuanTri Int Mã quản trị 4 TenThucKhach Nvarchar Tên thực khách

5 DiaChi Nvarchar Địa chỉ

6 SoDienThoai Varchar Sốđiện thoại 7 DiaChiEmail Varchar Địa chỉ Email

8 TieuDe Nvarchar Tiêu đề (adsbygoogle = window.adsbygoogle || []).push({});

9 NoiDung Nvarchar Nội dung

10 TraLoi Nvarchar Trả lời

11 NgayGui Datetime Ngày gửi

12 TrangThai Bit Trạng thái

Bảng 9: Phản hồi từ thực khách

3.6 QUAN HỆ GIỮA CÁC BẢNG

3.7 Ràng buộc toàn vẹn

3.7.1 Ràng buộc toàn vẹn trên một bảng

Ràng buộc 1:

BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri)

Nội dung: Mỗi một ban quản trị phải có một mã số phân biệt với các ban quản trị

Bối cảnh: BanQuanTri

Điều kiện: ∀q1, q2 ∈ BanQuanTri

q1.MaQuanTri<> q2.MaQuanTri

Tầm ảnh hưởng:

Thêm Xoá Sửa

BanQuanTri + - +[MaQuanTri]

Ràng buộc 2:

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Nội dung: Mỗi nhà cung cấp phải có một mã nhà cung cấp phân biệt với các nhà cung cấp.

Bối cảnh: NhaCungCap

Điều kiện: ∀q1, q2 ∈ NhaCungCap

q1.MaNhaCungCap<>q2.MaNhaCungCap

Tầm ảnh hưởng:

Thêm Xoá Sửa

NhaCungCap + - +[NhaCungCap]

Ràng buộc 3:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh, (adsbygoogle = window.adsbygoogle || []).push({});

GioiThieu, NgayDangBai, TrangThai)

Nội dung: Mỗi một món ăn phải có một mã số phân biệt với các món ăn khác SVTH: Đỗ Thị Hiền, Nguyễn Thị Thuý Loan. 55

Bối cảnh: MonAn

Điều kiện: ∀q1, q2 ∈ MonAn q1.MonAn<> q2.MonAn

Tầm ảnh hưởng:

Thêm Xoá Sửa

MonAn + - +[MonAn]

Ràng buộc 4:

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) Nội dung: Mỗi một tin tức có một mã số phân biệt với các tin tức khác

Bối cảnh: TinTuc

Điều kiện: ∀q1, q2 ∈ TinTuc q1.TinTuc<> q2.TinTuc

Tầm ảnh hưởng:

Thêm Xoá Sửa

TinTuc + - +[TinTuc]

Ràng buộc 5:

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)

Nội dung: Mỗi một phản hồi từ thực khách có một mã phản hồi phân biệt với các phản hồi khác

Bối cảnh: PhanHoiTuThucKhach

Điều kiện: ∀q1, q2 ∈ PhanHoiTuThucKhach

q1.PhanHoiTuThucKhach<> q2.PhanHoiTuThucKhach Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[PhanHoiTuThucKhach] Ràng buộc 6: KhuVucNCC(MaKhuVuc, TenKhuVuc)

Nội dung: Mỗi một khu vực nhà cung cấp phải có một mã số khu vực phân biệt với các khu vực

Bối cảnh: KhuVucNCC

Điều kiện: ∀q1, q2 ∈ KhuVucNCC

q1.KhuVucNCC<> q2.KhuVucNCC Tầm ảnh hưởng: Thêm Xoá Sửa KhuVucNCC + - +[KhuVucNCC] 3.7.2 Ràng buộc toàn vẹn về miền giá trị Ràng buộc 7:

Mô tả: Ngày viết phải nhỏ hơn hoặc bằng ngày trên mạng.

Thuật toán:

Ngày viết bài <= Ngày đăng bài

Ràng buộc 8: Mô tả:

Số ký tự của tiêu đề phải nhỏ hơn hoặc bằng 200 (adsbygoogle = window.adsbygoogle || []).push({});

Câu trả lời không được để trống và phải dài không quá 50 ký tự. Số ký tự của trích dẫn giới thiệu dài không quá 4000 ký tự. Chiều dài , chiều cao của ảnh đại diện >0.

Thuật toán: Length(TieuDe)<=200 and Length(CauTraLoi )<=50 and TieuDe >0 and HinhAnh >0 Ràng buộc 9: Mô tả: Số ký tự của tên đăng nhập phải khác rỗng và có ký tự từ 6 đến 24. Số ký tự của mật khẩu không được để rỗng và có ký tự từ 6 đến 24. Thuật toán:

Length(ID) >= 6 and Length(ID)<=24 and Length(MK) >=6 and Length(MK) <=24.

Ràng buộc 10:

Mô tả:

Sốđiện thoại phải là chữ số có từ 8-12 ký tự Email không được để trống và phải hợp lệ. Thuật toán:

Length(SoDienThoai)>=8 and Length(SoDienThoai)<=12 and Length(Email) <> 0.

3.7.3 Ràng buộc liên bộ

Ràng buộc 11:

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Bối cảnh: NhaCungCap

Điều kiện: q1∈ T NhaCungCap, q2∈T NhaCungCap

q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaKhuVuc<>q2.MaKhuVuc Or q1.MaLoaiNCC<> q2.MaLoaiNCC Tầm ảnh hưởng: Thêm Xoá Sửa NhaCungCap + - +[MaNhaCungCap, MaKhuVuc,MaLoaiNCC] Ràng buộc 12:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

Bối cảnh: MonAn

Điều kiện: q1∈ T MonAn, q2∈ T MonAn

q1.MaMonAn<>q2.MaMonAn

Or q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaLoaiMonAn<> q2.MaLoaiMonAn

Tầm ảnh hưởng:

Thêm Xoá Sửa

MonAn + - +[MaMonAn,MaNhaCungCap, MaLoaiMonAn]

Ràng buộc 13:

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)

Bối cảnh: PhanHoiTuThucKhach

Điều kiện: q1∈ T PhanHoiTuThucKhach, q2∈ T PhanHoiTuThucKhach

q1.MaPhanHoi<>q2.MaPhanHoi Or q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaQuanTri<> q2.MaQuanTri Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[MaPhanHoi, MaNhaCungCap,MaQuanTri] Ràng buộc 14:

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) Bối cảnh: TinTuc (adsbygoogle = window.adsbygoogle || []).push({});

Điều kiện: q1∈ T TinTuc, q2∈ T TinTuc

q1.MaTinTuc<>q2.MaTinTuc Or q1.MaLoaiTinTuc<>q2.MaLoaiTinTuc

Tầm ảnh hưởng:

Thêm Xoá Sửa

TinTuc + - +[MaTinTuc, MaLoaiTinTuc]

3.7.4 Ràng buộc toàn vẹn có bối cảnh gồm nhiều quan hệ

3.7.4.1 Ràng buộc toàn vẹn về phụ thuộc tồn tại

Ràng buộc 15:

PhaLoaiNCC(MaLoaiNCC, TenLoaiNCC)

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Bối cảnh: PhanLoaiNCC, NhaCungCap

Điều kiện: PhanLoaiNCC[MaLoaiNCC] ⊆ NhaCungCap[MaLoaiNCC]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiNCC + - +[MaLoaiNCC]

NhaCungCap - + +[MaLoaiNCC]

Ràng buộc 16:

Bối cảnh: KhuVucNCC, NhaCungCap

Điều kiện: KhuVucNCC[MaKhuVuc] ⊆ NhaCungCap[MaKhuVuc]

Tầm ảnh hưởng:

Thêm Xoá Sửa

KhuVucNCC + - +[MaKhuVuc]

NhaCungCap - + +[MaKhuVuc]

Ràng buộc 17:

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) PhanLoaiTinTuc(MaLoaiTT, TenTT)

Bối cảnh: PhanLoaiTinTuc, TblTinTuc

Điều kiện: PhanLoaiTinTuc[MaLoaiTT] ⊆ TinTuc[MaLoaiTT]

Tầm ảnh hưởng:

Thêm Xoá Sửa (adsbygoogle = window.adsbygoogle || []).push({});

PhanLoaiTinTuc + - +[MaLoaiTT]

TinTuc - + +[MaLoaiTT]

Ràng buộc 18:

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

Bối cảnh: NhaCungCap, MonAn

Điều kiện: NhaCungCap[MaNhaCungCap] ⊆ MonAn[MaNhaCungCap]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiNhaCungCap + - +[MaNhaCungCap]

MonAn - + +[MaNhaCungCap]

Ràng buộc 19:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn) Bối cảnh: PhanLoaiMonAn, MonAn

Điều kiện: PhanLoaiMonAn[MaLoaiMonAn] ⊆ MonAn[MaLoaiMonAn]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiTinTuc + - +[MaLoaiTT]

TinTuc - + +[MaLoaiTT]

Ràng buộc 20:

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)

BanQuanTri(MaQuanTri,TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri)

Bối cảnh: PhanHoiTuThucKhach, BanQuanTri

Điều kiện: PhanHoiTuThucKhach[MaQuanTri] ⊆ BanQuanTri[MaQuanTri]

Tầm ảnh hưởng: (adsbygoogle = window.adsbygoogle || []).push({});

Thêm Xoá Sửa

PhanHoiTuThucKhach + - +[MaQuanTri]

BanQuanTri - + +[MaQuanTri]

3.7.4.2 Ràng buộc liên thuộc tính , liên quan hệ

Ràng buộc 21:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Bối cảnh: MonAn ,NhaCungCap Điều kiện: ∀qi ∈ MonAn

∃ qj ∈ T NhaCungCap: qi.MaNhaCungCap=qj.MaNhaCungCap Thì qi.NgayDangKy>=qj.NgayDangBai Tầm ảnh hưởng: Thêm Xoá Sửa MonAn + - +[NgayDangBai] NhaCungCap - + +[NgayDangKy]

Bối cảnh: NhaCungCap ,PhanHoiTuThucKhach Điều kiện: ∀qi ∈ NhaCungCap

∃ qj ∈ T PhanHoiTuThucKhach: qi.MaNhaCungCap=qj.MaNhaCungCap Thì qi.NgayGui<=qj.NgayDangKy Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[NgayGui] NhaCungCap - + +[NgayDangKy]

3.8 DẠNG CHUẨN

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

ƒ Nhà cung cấp đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn.

ƒ Nhà Cung Cấp đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của Nhà Cung Cấp đều phụ thuộc đầy đủ vào các khóa của Nhà Cung Cấp.

ƒ Nhà Cung Cấp đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của Nhà Cung Cấp đều không phụ thuộc bắc cầu vào một khóa nào của Nhà Cung Cấp.

ƒ Nhà Cung Cấp có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC)

ƒ Đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn. ƒ FPhanLoaiNCC = { f1: MaLoaiNCCÆ TenLoaiNCC } Æ PhanLoaiNCC đạt

dạng chuẩn 2.

ƒ PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiNCC và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC) có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

KhuVucNCC(MaKhuVuc, TenKhuVuc)

ƒ KhuVucNCC Đạt dạng chuẩn 1 vì mọi thuộc tính của KhuVucNCC đều là thuộc tính đơn.

ƒ FKhuVucNCC = { f1: MaKhuVucÆ TenKhuVuc } Æ KhuVucNCC đạt dạng chuẩn 2.

ƒ KhuVucNCC(MaKhuVuc, TenKhuVuc) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenKhuVuc và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ KhuVucNCC có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK. (adsbygoogle = window.adsbygoogle || []).push({});

PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn )

ƒ PhanLoaiMonAn Đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn.

ƒ FPhanLoaiMonAn = { f1: MaLoaiMonAnÆ TenLoaiMonAn} ÆPhanLoaiMonAn đạt dạng chuẩn 2.

ƒ PhanLoaiMonAn( MaLoaiMonAn, TenLoaiMonAn) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiMonAn và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiMonAn có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

ƒ MonAn Đạt dạng chuẩn 1 vì mọi thuộc tính của món ăn đều là thuộc tính đơn. ƒ MonAn đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của MonAn đều phụ

thuộc đầy đủ vào các khóa MonAn.

ƒ MonAn đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của MonAn không phụ thuộc bắc cầu vào các khóa.

ƒ MonAn có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanLoaiTinTuc(MaLoaiTT, TenLoaiTT )

ƒ PhanLoaiTinTuc Đạt dạng chuẩn 1 vì mọi thuộc tính của PhanLoaiTinTuc đều là thuộc tính đơn.

ƒ FPhanLoaiTinTuc = { f1: MaLoaiTTÆ TenLoaiTT} ÆPhanLoaiTT đạt dạng chuẩn 2.

ƒ PhanLoaiTinTuc( MaLoaiTinTuc, TenLoaiTinTuc) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiTinTuc và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiTinTuc có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin )

ƒ TinTuc đạt dạng chuẩn 1 vì mọi thuộc tính của TinTuc đều là thuộc tính đơn. ƒ FtinTuc{f1: MaTinTuc, MaLoaiTTÆ TieuDe, NoiDung, NgayDangTin }Æ

Đạt dạng chuẩn 2.

ƒ TinTuc đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của TinTuc không phụ thuộc bắc cầu vào các khóa.

ƒ TinTuc có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri )

ƒ BanQuanTri đạt dạng chuẩn 1 vì mọi thuộc tính của BanQuanTri đều là thuộc tính đơn.

ƒ FBanQuanTri{f1: MaQuanTriÆTenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai, DiachiEmail , LoaiQuanTri}Æ đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của BanQuanTri đều phụ thuộc đầy đủ vào các khóa BanQuanTri.

ƒ BanQuanTri đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của BanQuanTri không phụ thuộc bắc cầu vào các khóa.

ƒ BanQuanTri có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui, TrangThai) ƒ PhanHoiTuThucKhach đạt dạng chuẩn 1 vì mọi thuộc tính của

PhanHoiTuThucKhach đều là thuộc tính đơn. (adsbygoogle = window.adsbygoogle || []).push({});

ƒ PhanHoiTuThucKhach đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của PhanHoiTuThucKhach đều phụ thuộc đầy đủ vào các khóa.

ƒ PhanHoiTuThucKhach đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của PhanHoiTuThucKhach không phụ thuộc bắc cầu vào các khóa.

ƒ PhanHoiTuThucKhach có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

3.9 SƠĐỒ WEBSITE

3.9.1 Sơ Đồ Cho Người Dùng

3.9.2 SơĐồ Cho Ban Quản Trị

CHƯƠNG 4 KẾT QUẢ THỰC HIỆN 4.1 NHỮNG TRANG ỨNG DỤNG AJAX

4.1.1 Trang của ban quản trị

Khi dùng AJAX thì tại trang đổi mật khẩu của Ban quản trị, nhập mật khẩu cũ vào thì Ajax sẽ giúp kiểm tra mật khẩu cũ mà admin nhập vào, bằng cách trao đổi dữ liệu với web server, không có nạp lại trang.

Hình 4.1 Màn hình thay đổi mật khẩu.

Thông tin đầu vào:

- Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới.

Thông tin đầu ra:

- Hiện thông báo lỗi nếu thông tin điền vào không đầy đủ hoặc không hợp lệ. - Hiện thông báo đổi mật khẩu thành công nếu thông tin đầu vào đầy đủ và

hợp lệ.

Kiểm tra hợp lệ:

- Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu không được để trống và phải có từ 6 đến 24 ký tự. Xác nhận mật khẩu phải giống với mật khẩu mới.

4.1.2 Trang khi xác lập lại mật khẩu cho quản trị khác

Tại trang xác nhập lại mật khẩu cho quản trị khác, khi admin nhấn vào nút xác lập lại

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 46)