Hỏi về thiết kế bảng cơ sở dữ liệu mysql cho app đặt phòng

Mình đang làm một app về đặt phòng, có một phần liên quan đến phòng đặt sẽ có rất nhiều tiện ích đi kèm (như trong ảnh). Mình muốn hỏi là sẽ thiết kế dữ liệu phần tiện ích này với phòng như thế nào cho hợp lý. Có thể lưu thành một cột trong bảng phòng cho mỗi loại tiện ích rồi lưu thành mảng trong database được không?

BẢNG TIỆN ÍCH CHO MỖI PHÒNG

+---------+-----------+
| MaPhong | MaTienIch |
+---------+-----------+
| P1      | T1        |
+---------+-----------+
| P2      | T1        |
+---------+-----------+
| P2      | T3        |
+---------+-----------+

BẢNG THÔNG TIN TIỆN ÍCH

+-----------+-----------------+---------------+
| MaTienIch | TenTienIch      | MaNhomTienIch |
+-----------+-----------------+---------------+
| T1        | Thang máy riêng | N1            |
+-----------+-----------------+---------------+
| T2        | Hồ Bơi          | N2            |
+-----------+-----------------+---------------+
| T3        | Sân vườn        | N2            |
+-----------+-----------------+---------------+

BẢNG NHÓM TIỆN ÍCH

+---------------+------------------+
| MaNhomTienIch | TenTienIch       |
+---------------+------------------+
| N1            | Tiện ích chung   |
+---------------+------------------+
| N2            | Tiện ích giả trí |
+---------------+------------------+
6 Likes

ok cảm ơn b, cách này mình đã rõ nhưng có cách nào khác để ko phải sinh ra bảng trung gian không nhỉ

2 Likes

Có chứ cậu, cậu có thể có 1 bảng chứa tất cả các trường kể trên. Nhưng, trừ khi cậu có lý do đặc biệt lắm mới sử dụng cách thiết kế đó, vì:

  • Cậu sẽ đối mặt với việc nhiều record có toàn null field
  • Mỗi record của cậu có kích thước lớn hơn. Nó sẽ ảnh hưởng tới tốc độ query khi cậu tổng hợp dữ liệu.
  • CSDL của cậu sẽ to lên rõ rệt, nhưng lại to 1 cách vô lý, do có rất nhiều vùng nhớ chỉ chứa null.

Còn không, cậu nên chuẩn hóa CSDL của cậu. Câu trả lời của @anon71189590 là kết quả của quá trình đó đó.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?