Khách hàng đặt làm một ứng dụng di động kết hợp web cho một siêu thị bán hàng. Siêu thị kinh doanh rất nhiều chủng loại mặt hàng: [Quần áo nam, nữ, văn phòng], [quần áo trẻ em], [đồ chơi], [thực phẩm, đồ uống], [đồ gia đụng], [đồ điện tử , , ]…

Tham khảo các web site sau đây: http://pico.vn/, http://www.mainguyen.vn/, http://www.nhatcuong.com/,…

Học lập trình web trực tuyến


Hãy thiết kế CSDL quan hệ trên Postgresql để mô hình hoá đủ các thông tin cần thiết để xây dựng web site, web service cung cấp thông tin dạng REST cho ứng dụng di động hiển thị:
1- Danh mục phân loại chủng loại hàng chung: [Quần áo – thời trang, Đồ chơi, Thực phẩm – đồ uống, Đồ gia dụng, Điện tử gia dụng, Di động – tablet, Máy tính – linh kiện – mạng]

2- Danh mục phân loại chủng loại hàng chi tiết: [Quần áo – thời trang: Nam, Nữ, Trẻ con], [Đồ chơi: bé trai, gái, thiếu nhi], [Thực phẩm – đồ uống: ….]….

3- Do có nhiều mặt hàng cùng một loại, có nhiều tính chất chung nhau như:
Tivi các hãng sẽ có thuộc tính: [công nghệ: LED, Plasma, OLED], [màn hình: phẳng, cong], [smart: có kết nối Internet, không], [cổng giao tiếp: HDMI, USB, DNA, Bluetooth, Ethernet, Wifi] Xe máy sẽ có thuộc tính: [loại động cơ: 4 thì, 2 thì], [chuyển động: ga, số, côn tay], [dung tích: xy lanh], [màu sơn: …],….

Tất cả các mặt hàng đều có một số thuộc tính chung: Tên, mã SKU (mã để quản lý trong kho: Stock Keeping Unit, phải là duy nhất để gán mã vạch), mô tả chi tiết, nhà sản xuất, công ty phân phối, ngày sản xuất, thời gian bảo hành, hạn sử dụng, giá gốc nhập, giá bán hiện tại, bảo hành ~ hạn sử dụng.

Cần thiết kế hệ thống bảng để lưu được thông tin chung của mặt hàng và các thông tin đặc thù từng loại mặt hàng.
Các hàng cùng loại có thể so sánh được với nhau. Ví dụ khách hàng muốn so sánh xe Airblade 2014 với Exciter 150.

Cùng loại mặt hàng rõ ràng, nhưng khác một tính chất như màu sắc thì khác giá tiền. Lúc này phải tách ra thành các mã SKU độc lập. Ví dụ iPhone 6 có dung lượng khác nhau: 16G, 32G, 64G. Hoặc Exciter 150 có các màu sơn, tem khác nhau…

4- Nhà sản xuất (khác với nhà phân phối): Honda, Yamaha, Nike, Adidas, Apple, Microsoft, Sony, LG, Samsung….
Nên thiết kế một bảng riêng.
Ở mỗi phân loại chủng loại hàng chung, thường có danh mục các hãng sản xuất phù hợp. Ví dụ: mục quần áo – thời trang nên có Nike, Adidas, Northface… nhưng có thể không có Apple, Microsoft, Sony, LG, Samsung.

5- Ứng dụng có một text box để search. Trong scope của code camp này, giả sử người dùng chỉ tìm kiếm theo tên sản phẩm. Thực tế người dùng sẽ gõ từ khoá tìm kiếm phức tạp dị hơn nhiều. Do đó không thể xài SQL query để truy vấn được đâu.

Một số lưu ý
1- Không phải thuộc tính nào (column) cũng phải có. Sẽ có nhiều thuộc tính là null.
2- Phải thiết kế hệ thống bảng – quan hệ đủ mềm dẻo để việc bảo trì, chỉnh sửa cấu trúc bảng là thấp nhất. Trong Postgresql 9.4 có kiểu dữ liệu JSONB giúp record có thể lưu động các loại thông tin không cần tuân thủ cấu trúc cột (column) cổ điển.
3- Do đề tài codecamp phức tạp, nên hai học viên sẽ cùng làm một bài. Techmaster sẽ cử một lập trình CSDL để trả lời các câu hỏi của các bạn qua chat.
4- Tham khảo tuyển tập các loại Database schema cho nhiều ngành ở đây http://www.databaseanswers.org/data_models/
5- Nên bắt đầu làm càng sớm tốt. Làm trước 1-2 ngày sẽ không kịp đâu.
6- Lịch code camp ngày 25/1/2015 tại số 14 ngõ 4, Nguyễn Đình Chiểu. Thực hành ở phòng lab tầng 1 và tầng 4. Đủ chỗ cho anh em.

Gợi ý các bước làm
1- Thu thập tập dữ liệu mẫu từ các web site thương mại điện tử nổi tiếng để học hỏi họ tổ chức thông tin như thế nào?
2- Vẽ khối lương các bảng đừng quan tâm các trường (cột) chi tiết vội. Chỉ cần xác định được khoá chính (primary key) là ok rồi.
3- Hình dung quan hệ phù hợp giữa các bảng: 1-1, kế thừa, một – nhiều, nhiều – nhiều.
4- Cùng bàn bạc với đồng đội sẽ có chỗ nào chưa ổn.
5- Tạo bảng trên Postgresql viết ra một file schema.sql để còn nộp bài. Mỗi lần sửa thì sửa trên schema.sql sau đó lưu lại. Nhớ DROP TABLE trước CREATE TABLE
6- Tạo dữ liệu mẫu, viết vào một file data.sql. Nên tạo nhiều record đa dạng để sớm phát hiện sai sót, bất cập trong thiết kể bảng. Nhớ nguyên tắc Fail Fast khi làm sản phẩm không các men.
7- Đặt nhiều câu hỏi dạng : What – If, nếu – thì để xem cấu trúc CSDL có bền không. Chỉnh lại schema.sql và data.sql cho đến khi các dữ liệu – quan hệ phù hợp.
8- Viết báo cáo bằng MkDocs

Khóa học lập trình di động tại Techmaster:

Để cài đặt MacOSX lên phần cứng không phải Apple liên hệ chuyên gia cài Hackintosh:

  • Nguyễn Minh Sơn: 01287065634
  • Huỳnh Minh Sơn: 0936225565
  • Website: caidatmacos.com