PDA

View Full Version : Hỏi về thiết kế CSDL



nmd
11-05-2007, 10:29
Mình có điều băn khoăn về các định type cho field. Để mình nói 1 vd cụ thể cho dễ hiểu nhé:

Có 2 table. Thằng đầu là Users chứa các thông tin của user trong đó có UserID và UserName... Còn thằng thứ 2 là Reviews trong đó chứa những bài review của user. Thực chất còn có 1 table thứ 3 là Business trong đó có BusinessID và BusinessName và các field khác.

Quay lại bảng Review, nó chứa những bài review của user vè các business. Do đó, nó có các field:
ReviewID
ReviewContent
Hai thằng này kô có vấn đề gì cả. Nhưng đến 2 field sau thì mình có chút băn khoăn.
-Nên là UserID hay UserName.
-Nên là BusinessID hay BusinessName.

Hồi trước thì mình dùng ID thôi. Nhưng hôm nay nghĩ kĩ lại thì có chút bối rối.
-Nếu như dùng ID cho 2 field đó, mỗi lần truy xuất nôi dung Reviews table thì mình buộc phải join với 2 table kia để lấy username và businessname để hiện lên Web page nữa- kô ai hiện ra id cả.
-Còn nếu dùng name cho 2 field đó thì mỗi lần truy xuất thì chằng cần join với 2 table kia làm gì. Và mình nghĩ như thế sẽ nhanh hơn, đúng kô? Nhưng nhược điểm là DB sẽ lớn hơn.

Nên dùng cách nào bây giờ?

thangvq
11-05-2007, 17:00
Hi,

Làm theo cách 2 có nhược điểm chính là không đảm bảo tính đúng đắn của dữ liệu. VD bạn có thể insert 1 record mới vào bảng review mà username chẳng thuộc về userID nào.

phatnq2003
14-05-2007, 10:34
Xài ID là đúng chuẩn.
Bạn có thể tạo sẵn một view. Mỗi lần bạn muốn truy cập nội dung thì bạn gọi view đó ra:
SELECT * FROM view WHERE userID = @userID AND businessID = @businessID

Tigerpk
20-05-2007, 11:31
hi tôi thực sự đồng ý với bác phatnq2003,bạn nên xài ID cho hợp lí

nmd
20-05-2007, 11:54
Xin cám ơn các bạn nhiều.