Chương 4 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
4.2. Thiết kế cơ sở dữ liệu
4.2.2. Mô tả chi tiết các bảng
4.2.2.1. Bảng “user” – Tài Khoản người Dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
user
2 username varchar Bắt buộc nhập Tên đăng nhập của người dùng
3 password varchar Bắt buộc nhập Mật khẩu của người dùng
40
5 last_name varchar Họ người dùng
6 full_name varchar Họ tên đầy đủ của
người dùng
7 gender varchar Giới tính của người
dùng
8 email varchar Email của người dùng
9 avatar varchar Ảnh đại diện của
người dùng
10 description varchar Mô tả người dùng
11 phone varchar Số điện thoại người
12 role_id int Khóa ngoại Role của người dùng
13 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
14 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
15 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
16 created_at date Thời gian khởi tạo đối
tượng
17 updated_at date Thời gian cập nhật đối
41
Bảng 4.2.1. Mô tả bảng “user” – Thông tin người dùng
4.2.2.2. Bảng “role” – Vai trò của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng
role
2 description varchar Mơ tả chi tiết vai trị
3 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối
tượng
7 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.2. Mơ tả bảng “role” – Vai trị của người dùng
4.2.2.3. Bảng “privilege” – Quyền hạn có trong hệ thống
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng
42
2 description varchar Mô tả chi tiết quyền
hạn
3 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối
tượng
7 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.3. Mơ tả bảng “privilege” – Quyền hạn có trong hệ thống
4.2.2.4. Bảng “role_privilege” – Quyền hạn của vai trị
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 role_id varchar Khóa chính, Khóa ngoại
ID định danh của bảng role_privilege, khóa ngoại trỏ tới bảng role 2 privilege_id varchar Khóa chính, Khóa
ngoại
ID định danh của bảng role_privilege, khóa ngoại trỏ tới bảng privilege
43
3 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối
tượng
7 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.4. Mô tả bảng “role_privilege” – Quyền hạn của vai trò
4.2.2.5. Bảng “user_address” – Địa chỉ của người dùng
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, Khóa
ngoại
ID định danh của bảng user_address, quan hệ 1-1 với bảng user 2 address varchar Bắt buộc nhập Mô tả chi tiết địa chỉ
người dùng 3 country_id varchar Khóa Ngoại, Bắt
buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết người dùng thuộc quốc gia nào
44
4 province_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết người dùng thuộc tỉnh, thành phố nào 5 district_id int Khóa Ngoại, Bắt
buộc nhập
Khóa ngoại trỏ đến bảng district, cho biết người dùng thuộc xã, huyện nào
Bảng 4.2.5. Mô tả bảng “user_address” – Địa chỉ của người dùng
4.2.2.6. Bảng “country” – Quốc gia
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 code varchar Khóa chính ID định danh của bảng
country
2 name varchar Bắt buộc nhập Tên quốc gia
3 phone_code int Bắt buộc nhập Mã code điện thoại của quốc gia
Bảng 4.2.6. Mô tả bảng “country” – Quốc gia
4.2.2.7. Bảng “province” – Tỉnh, Thành Phố
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id id Khóa chính ID định danh của bảng
province
2 is_city boolean Bắt buộc nhập Kiểm tra đối tượng có phải thành phố hay không
45
3 name varchar Bắt buộc nhập Tên của tỉnh, thành phố
4 short_name varchar Bắt buộc nhập Tên rút gọn của tỉnh, thành phố
5 country_id varchar Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết tỉnh, thành phố thuộc quốc gia nào
Bảng 4.2.7. Mô tả bảng “province” – Tỉnh, Thành Phố
4.2.2.8. Bảng “district” – Xã, Huyện
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id id Khóa chính ID định danh của bảng
district
2 name varchar Bắt buộc nhập Tên của xã, huyện
3 short_name varchar Bắt buộc nhập Tên rút gọn của xã, huyện
4 province_id int Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết xã, huyện thuộc tỉnh, thành phố nào
Bảng 4.2.8. Mô tả bảng “district” – Xã, Huyện
4.2.2.9. Bảng “apartment” – Thông tin bất động sản
46
1 id int Khóa chính ID định danh của bảng
apartment
2 area double Bắt buộc nhập Diện tích bất động sản 3 title varchar Bắt buộc nhập Tiêu đề bất động sản 4 expired_date date Bắt buộc nhập Ngày hết hạn (đóng
bài viết) bất động sản
5 price_rent double Giá thuê bất động
sản(dành cho thể loại thuê)
6 unit_rent varchar Giá bất động sản kèm
đơn vị(dành cho thể loại thuê)(VD: 15 triệu/ tháng)
7 price double Giá bất động sản tính
theo đơn vị m2(dành cho thể loại bán)
8 total_price double Tổng giá của bất động
sản(dành cho thể loại bán)
9 type_apartment varchar Bắt buộc nhập Loại bất động sản (BUY/RENT)
47
11 status varchar Trạng thái bất động
sản
12 photos varchar Bắt buộc nhập Danh sách hình ảnh của bất động sản 13 author_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user, tác giả của bất động sản
14 category_id int Khóa ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng category, thể loại bất động sản
15 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
16 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
17 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
18 created_at date Thời gian khởi tạo đối
tượng
19 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.9. Mô tả bảng “apartment” – Thông tin bất động sản
48
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, khóa ngoại ID định danh của bảng apartment_detail, quan hệ 1-1 với bảng apartment
2 bathroom_quantity int Số lượng phòng tắm
của bất động sản
3 bedroom_quantity int Số lượng phòng ngủ
của bất động sản
4 description varchar Mô tả chi tiết bất động
sản
5 floor_quantity int Số lượng tầng của bất
động sản
6 house_direction varchar Hướng nhà bất động
sản
7 toilet_quantity int Số phòng vệ sinh của
bất động sản
8 more_info varchar Thông tin thêm về bất
động sản
Bảng 4.2.10. Mô tả bảng “apartment_detail” – Thông tin chi tiết bất động sản
4.2.2.11. Bảng “apartment_address” – Địa chỉ bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính, Khóa
ngoại
ID định danh của bảng apartment_address,
49
quan hệ 1-1 với bảng apartment
2 address varchar Bắt buộc nhập Mô tả chi tiết địa chỉ bất động sản
3 country_id varchar Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng country, cho biết bất động sản thuộc quốc gia nào
4 province_id int Khóa Ngoại, Bắt buộc nhập
Khóa ngoại trỏ đến bảng province, cho biết bất động sản thuộc tỉnh, thành phố nào 5 district_id int Khóa Ngoại, Bắt
buộc nhập
Khóa ngoại trỏ đến bảng district, cho biết bất động sản thuộc xã, huyện nào
Bảng 4.2.11. Mô tả bảng “apartment_address” – Địa chỉ của bất động sản
4.2.2.12. Bảng “category” – Thể loại bất động sản
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id varchar Khóa chính ID định danh của bảng
category
2 name varchar Mô tả tên của thể loại
3 is_deleted boolean Xác định đối tượng đã
50
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối
tượng
7 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.12. Mô tả bảng “category” – Thể loại bất động sản
4.2.2.13. Bảng “favourite” – Danh sách bất động sản yêu thích của người dùng STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 apartment_id int Khóa chính, Khóa ngoại
ID định danh của bảng favourite, khóa ngoại trỏ tới bảng apartment
2 user_id int Khóa chính, Khóa
ngoại
ID định danh của bảng favourite, khóa ngoại trỏ tới bảng user
3 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
4 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
51
5 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
6 created_at date Thời gian khởi tạo đối
tượng
7 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.13. Mô tả bảng “favourite” – Người dùng yêu thích bất động sản
4.2.2.14. Bảng “tracking_category” – Danh sách thông tin tracking của người dùng đối với thể loại
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_category 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với thể loại này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 category_id int Khóa ngoại Khóa ngoại trỏ đến bảng category
6 is_deleted boolean Xác định đối tượng đã
52
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.14. Mô tả bảng “tracking_category” – Thông tin tracking của người dùng đối với category
4.2.2.15. Bảng “tracking_district” – Danh sách thông tin tracking của người dùng đối với huyện/xã
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_ district 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với huyện, xã này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
53
5 district_id int Khóa ngoại Khóa ngoại trỏ đến bảng district
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.15. Mô tả bảng “tracking_ district” – Thông tin tracking của người dùng đối với xã, huyện
4.2.2.16. Bảng “tracking_province” – Danh sách thông tin tracking của người dùng đối với quận/thành phố
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
54
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 province_id int Khóa ngoại Khóa ngoại trỏ đến bảng province
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.16. Mô tả bảng “tracking_ province” – Thông tin tracking của người dùng đối với tỉnh, thành phố
4.2.2.17. Bảng “tracking_area” – Danh sách thơng tin tracking của người dùng đối với diện tích
55
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 area double Thông tin tracking về
diện tích
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
56
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.17. Mô tả bảng “tracking_ area” – Thông tin tracking của người dùng đối với diện tích
4.2.2.18. Bảng “tracking_bathroom” – Danh sách thơng tin tracking của người dùng đối với phòng tắm
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 bathroom int Thông tin tracking về
số lượng phòng tắm
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
57
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.18. Mô tả bảng “tracking_ bathroom” – Thơng tin tracking của người dùng đối với phịng tắm
4.2.2.19. Bảng “tracking_bedroom” – Danh sách thông tin tracking của người dùng đối với phòng ngủ
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 bedroom int Thông tin tracking về
58
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.19. Mô tả bảng “tracking_ bedroom” – Thông tin tracking của người dùng đối với phòng ngủ
4.2.2.20. Bảng “tracking_direction” – Danh sách thông tin tracking của người dùng đối với hướng nhà
STT Tên thuộc tính Kiểu Ràng Buộc Ý nghĩa, ghi chú
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
59
đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 direction varchar Thông tin tracking về
hướng nhà
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối tượng
9 created_at date Thời gian khởi tạo đối
tượng
10 updated_at date Thời gian cập nhật đối
tượng
Bảng 4.2.20. Mô tả bảng “tracking_ province” – Thông tin tracking của người dùng đối với hướng nhà
4.2.2.21. Bảng “tracking_floor” – Danh sách thông tin tracking của người dùng đối với số lượng tầng
60
1 id int Khóa chính ID định danh của bảng
tracking_province 2 ip varchar Bắt buộc nhập Địa chỉ IP của người
dùng
3 rating int Bắt buộc nhập Tổng số điểm của
người dùng quan tâm đối với quận. thành phố này
4 user_id int Khóa ngoại Khóa ngoại trỏ đến
bảng user
5 floor int Thông tin tracking về
số lượng tầng
6 is_deleted boolean Xác định đối tượng đã
xóa hay chưa
7 created_by int Khóa ngoại Khóa ngoại thể hiện người khởi tạo đối tượng
8 updated_by int Khóa Ngoại Khóa ngoại thể hiện người cập nhật đối