tôi cần để mô hình hóa một ý tưởng có thể được chia nhỏ và nghĩ đến như sau:Cách tiếp cận tốt nhất cho việc lưu trữ One-Nhiều mối quan hệ - thực tiễn Ví dụ/Dilemma
- BookDetails
- BookPrices
Vấn đề ở đây là bạn có thể có nhiều giá cho sách và những mức giá này có khả năng thay đổi. Dưới đây là ví dụ
BookDetails: ----------------- ID Name 1 Harry Potter…
Điều này thật dễ dàng.
đâu nó là thú vị hơn là cho một cuốn sách này, tôi có thể có mười mức giá khác nhau trong ngày đó, ví dụ:
BookPrices: ------------------------------------ Book_Details_Id Kind Price 1 SpecialOffer 10 1 BulkPurchase 20 1 Normal 30
Tôi cần phải cung cấp một danh sách và tất cả giá của họ trong các cột - một cái gì đó như:
BookName SpecialOffer BulkPurchase Normal Harry Potter… 10 20 30
Câu hỏi của tôi là: Bảng giá sách có thực sự có tất cả các loại giá khác nhau làm cột không? Đối với tôi điều này là xấu và ý tưởng tốt hơn là có mỗi giá là một hàng
Nếu tôi sử dụng cách tiếp cận đó, tôi không thể nghĩ ra truy vấn SQL để tạo cho tôi tập kết quả. Tôi đã nghĩ về điều này cả buổi sáng.
EDIT: Tôi không mất nhiều thời gian để tính giá - chúng phải được lưu trữ.
EDIT: Đây là cơ bản 1-n appraoch tôi có thể nghĩ đến (Nhờ bình luận dưới đây) - nó những gì tôi thực sự đã có trong tâm trí
CHỌN book.bookid, bp1.price, bp2.price TỪ cuốn sách THAM GIA bookprice bp1 JOIN bookprice bp2 ON bp1.bookid = book.bookid AND bp1.pricetype = 1 AND bp2.bookid = book.bookid AND bp2.pricetype = 2 ...
Vấn đề là cho mười giá bạn sẽ tham gia mười lần mà stinks!
Bạn có thể cho chúng tôi biết yêu cầu cụ thể và cụ thể nào cho lược đồ bạn đang phát triển không? Một số câu hỏi: Bạn có cần phải có giá cụ thể cho mỗi cuốn sách không? Sẽ có nhiều loại ưu đãi? Các loại phiếu mua hàng có thay đổi thường xuyên không? –
Tôi có quyền kiểm soát cách thể hiện điều này - tôi có thể chọn bảng 1-n (tôi thích làm) nhưng tôi không thể nghĩ cách tôi có thể lấy tất cả giá trong cột cho một cuốn sách. Cách khác là có mọi loại giá trong bảng và có một ánh xạ 1-1 –
Bạn muốn có khả năng "** PIVOT **", SQL Server không hỗ trợ. SQL Server không thể tạo các cột như thế. –