PDA

View Full Version : thiết kế cơ sở dữ liệu cho trang web bán hàng



anhhao095
11-04-2006, 15:43
Tôi đang học thiết kế web. Bây giờ đang thiết kế trang web bán hàng trên mạng. Nhưng tôi gặp rắc rối khi thiết kế cơ sở dữ liệu.Cụ thể thế này: trang web của tôi bán linh kiện, thiết bị điện, gồm rất nhiều mặt hàng khác nhau như bóng đèn, ổ cắm, dây điện các loại,...Mà mỗi loại thì lại có những thông tinh cần lưu rất khác nhau, như bóng đèn thì có công suất, rồi có kiểu (tròn, dài, dèn ngủ..)tương tự cho các loại khác
Nếu tôi thiết kế mỗi loại một table thì sinh ra rất nhiều table, hơn nữa nếu mai mốt người ta bán thêm một mặt hàng mới thì mình lại thêm một table nữa hay sao???
Còn chỉ làm một table cho các loại khác nhau thì cũng không được, vì thông tinh chi tiết của từng mặt hàng không làm sao lưu, hay kiểm soát người ta có nhập vào đúng hay không. Tôi đang điên đàu vì nó. Có ai biết cách mong chỉ dùm. Cảm ơn nhiều lắm!
Các bác hiểu thế này thì không đúng ý tôi muốn hỏi rồi.Vấn đề của tôi là mỗi mặt hàng lại có số lượng, tên các thuộc tính khác nhau.
Ví dụ: bóng đèn có chiều dài, công suất, hình dạng..., công dụng(để bàn, trang trí, đèn ngủ...)
Trong khi công tắc thì lại có những thuộc tính khác như: số lỗ cắm, kiểu, ...
Nếu dùng 1 bảng productDetail thì làm sao tôi lưu được tất cả các thuộc tính khác nhau đó của các loại mặt hàng

phatnq2003
11-04-2006, 17:25
bạn phải thiết kế một table lưu thông tin về những mặt hàng của bạn, một table lưu thông tin về đơn hàng, nếu cần thiết một table về danh sách khách hàng.

Tốt nhất là bạn nên kiếm một tài liệu thích hợp về CSDL để tham khảo.

lannguyen
11-04-2006, 17:34
Tại sao lại lưu mỗi mặt hàng / 1 table?
LoaiHang(#MaLH, Ten) -> (1, Sach), (2, Do Dien Gia Dung)
HangHoa(#MaHang, MaLH, Ten, Gia, ...) -> có thể để khóa chính là MaHang, khóa ngoại MaLH hoặc khóa chính (MaHang, MaLH).

quynhlan
24-04-2006, 08:46
Theo QL nghĩ, có 3 cách.

a) Trường text. Những thuộc tính đặc biệt linh tinh cho hết cả vào 1 trường text. Lúc nhập dữ liệu thì tùy theo chủng loại hiện 1 text template để người dùng điền thông số vào. Đơn giản và ít constraints.

b) Mỗi chủng loại một table. Khi thêm 1 chủng loại, thêm 1 table. Đây là cách mà anhhao095 đang hướng tới. Khả năng constraint check tốt hơn. Nhưng số chủng loại không thể quá nhiều. Có khi vài chủng loại dùng chung 1 table, và một số trường không được sử dụng, khiến cho constraints giảm, mất chặt chẽ.

c) Object-oriented database. Mỗi chủng loại tương ứng 1 class. Mỗi class được map sang 1 hoặc nhiều table, hay nhiều class map vào 1 table; những map này mình không cần phải care nhiều vì có công cụ hỗ trợ :-P. Khả năng check constraint tốt, thực thi cũng tốt hơn cách trên (vì mã nguồn tốt hơn). Cách này dùng trong trường hợp có rất nhiều chủng loại và yêu cầu constraints chặt chẽ cho từng chủng loại.

Ở bên box C# .NET có một số bài viết (nếu QL nhớ không lầm, của bạn bienca101) về object-oriented database. Chính là để dùng cho trường hợp như thế này đó.

Về performance, có lẽ cách a) rẻ tiền mà hiệu quả nhất. (Cái này phải thử mới biết, QL không dám phán bừa.) Nói chung nếu không phải là CSDL kỹ thuật mà là CSDL bán hàng thì QL nghĩ nên dùng cách a).

dinhbaochau
25-04-2006, 14:52
Không cần phải lưu các thuộc tính của nó theo từng table khác nhau. Chỉ cần lưu thuộc tính chung cho toàn một , gọi chung là hàng hóa, sau khi đưa lên trang web, chỉ cần viết thêm một đoạn code cho phép kèm file html và mọi thuộc tính của từng loại được mô tả trong file html này.
Đó là cách đơn giản nhất. Nhưng không dễ viết đâu!

nguyentuancdcn
02-10-2010, 16:50
có ai phân tích rùi cho mình cái sơ đồ quan hệ thực thể ER cái được không....
Mình cũng đang làm cái ni... nhưng chưa có ai giúp cả,,, Mong các bạn giúp đở
Thank nhiều !!!

freshgraduate09
03-10-2010, 00:46
có ai phân tích rùi cho mình cái sơ đồ quan hệ thực thể ER cái được không....
Mình cũng đang làm cái ni... nhưng chưa có ai giúp cả,,, Mong các bạn giúp đở
Thank nhiều !!!

neu dùng sql server thì bạn có thể tạo 1 cột description với kiểu là xml, theo đo tha hồ định nghĩa thuộc tính riêng cho từng mặt hàng , dùng XQuery để tương tác mà không cần tạo thêm 1 nhóc các bảng con thuộc tính cho từng mặt hàng nữa.

Sunday
03-10-2010, 01:02
Hơ, dùng mô hình cơ sở dữ liệu cũng mệt, code mệt, và nhập liệu cũng mệt..nhìn chung, cả nhà đều mệt.
Cậu thử làm một table có tên là product, gồm các trường:
id , kiểu int, auto
title kiểu char là tên sản phẩm
brief kiểu text là thông tin tóm tắt của sản phẩm
content kiểu text là nội dung miêu tả chi tiết về sản phẩm
create_time kiểu int là thời gian tạo sản phẩm
create_user kiểu char là người tạo sản phẩm
image kiểu char lưu đường dẫn ảnh sản phẩm
Ngoài ra còn một số trường dữ liêu khác như:

price là trường giá sản phẩm,
lock là trường lưu status của sản phẩm
cat là trường lưu category sản phẩm
có thể tạo thêm các trường để lưu một số đặc trưng quan trọng dùng để lọc sản phẩm.
Ngoài ra cũng chẳng còn gì nhiều khác nữa.

alin_tincbt
15-10-2010, 15:46
các anh chị ơi! có ai bit thể hiện lưu đồ cho 1 trang web bán hàng không?làm ơn chỉ giúp e với!hi.thanks.

biẽnanh
08-11-2010, 14:56
mình đang làm bài tập về csdl nhưng khó quá ah!các bạn có thể giúp mình được không

[=========> Bổ sung bài viết <=========]

mình làm bt lớn về csdl về quản lý nhà sách.các bạn có thể hướng dận mình được không?
huhu!!!!!!!!mình vốn rất chậm tiêu

hoatc
10-11-2010, 02:13
Hi bạn, chắc bạn học lập trình hướng đối tượng rồi đúng không? Thiết kế CSDL quan hệ cũng vậy cần apply tư tưởng HĐT. OK, nhà sách thì phải bán SÁCH rồi. Sách thì phải có Tác giả(*), Tên sách(*), giá bán(*), NXB (*), Cũng có thể cả No v.v. Vậy ta phải có một table là tbl_SACH với các trường như (*). Sách thì có nhiều loại Tiếng Anh, Tin học, Tâm lý -> Cần phải có một list các LOẠI SÁCH -> tbl_LOAI.Một số info có thể là một list như NXB, nhà cung cấp..thì cũng nên tạo các bảng tương ứng. (Tức khi này chúng ta ko lưu "NHÀ XUẤT BẢN LAO ĐỘNG XÃ HỘI" ở tbl_SACH mà bạn chỉ lưu ID của nó thôi). Việc mua bán thì thường phải có báo cáo tổng kết-> cần có tbl_BAN(Id, sachId, ngayban, soluong) đại loại là như vậy, bạn hoàn thiện nhé. chúc bạn thành công!