một vài suy nghĩ:
Bạn có thể muốn sử dụng cùng một bảng cho Recipe và thành phần, với một cột loại chỉ số. Lý do là Công thức nấu ăn có thể chứa công thức nấu ăn phụ. Hãy gọi bảng kết hợp "Item". Sau đó, bảng RecipeIngredient của bạn sẽ trông giống như
RecipeIngredient (RecipeId, ItemId, Amount).
Tôi hy vọng rằng bảng cũng sẽ có một cột sắp xếp.
Nếu bạn muốn thực hiện bất kỳ phép tính nào với các công thức này (ví dụ: chia tỷ lệ, phân tích dinh dưỡng, lập kế hoạch sản xuất) thì số lượng của bạn sẽ cần phải xác định đơn vị đo lường. Bạn có thể làm điều đó một cách rõ ràng (bằng cách có một cột riêng cho uofm) hoặc bạn có thể sử dụng trường văn bản cho số lượng và mong muốn người dùng nhập các giá trị như "1 cup" hoặc "2 tbs". Nếu bạn sử dụng cách tiếp cận đó, bạn sẽ cần phải đảm bảo rằng những gì họ nhập là dễ nhận biết và phân tích cú pháp mỗi khi bạn cần sử dụng nó. Điều này có thể trở nên phức tạp đáng ngạc nhiên, đặc biệt nếu bạn muốn đại diện cho năng suất công thức một cách chính thức.
Giả sử bạn muốn 1: M từ công thức thành danh mục, tôi vẫn không chắc tại sao bảng RecipeCategory của bạn sẽ có cột Tên. Tôi nghĩ rằng cái tên đó xuất phát từ định nghĩa Category.
Tôi đồng ý với Dave rằng bạn không thể sử dụng lại các bước chuẩn bị từ công thức đến công thức và vì vậy bảng RecipePreparationSteps (hoặc thứ gì đó tương tự) sẽ phù hợp hơn.
Tuy nhiên, công thức nấu ăn thường được trình bày với các thành phần và hướng dẫn được trộn lẫn. ví dụ.
Nội dung giới thiệu một số thành phần. hướng dẫn chuẩn bị một số nguyên liệu khác hướng dẫn nướng.
Để thỏa mãn điều đó, bạn cần phải khéo léo đặt giá trị chuỗi trong các bảng bước RecipeIngredient và RecipePreparation để bạn có thể kết hợp dữ liệu từ cả hai theo thứ tự phù hợp để trình bày. Một cách tiếp cận khác sẽ là, thay vì hai bảng này, hãy sử dụng bảng "RecipeLine" sao cho mỗi hàng có thể đại diện cho một lệnh HOẶC một thành phần. Tôi nghĩ rằng đó có thể là những gì bạn đang đề xuất. Những người theo chủ nghĩa thuần túy sẽ cau mày với kiểu quá tải bảng này, nhưng tôi không phải là người thuần túy.
Đây là chủ đề tôi tình cờ biết nhiều về, vì vậy hãy hỏi bất cứ điều gì.
Xin chào Elroy, Cảm ơn bạn đã có một phản hồi tuyệt vời và đáng yêu như tôi thực sự đánh giá cao nó. Tôi đã có một chút bối rối bởi tuyên bố này bạn đã thực hiện "..explicitly (bằng cách có một cột riêng biệt cho uofm) .." và cũng là bên cạnh đoạn cuối cùng là một cái gì đó tôi thực sự muốn làm. Bạn có thể xin giúp đỡ với một ví dụ? Nếu bạn không nhớ tôi có thể có một địa chỉ email để tôi có thể gửi cho bạn một phiên bản pdf của thiết kế hiện tại của tôi không? Cảm ơn bạn. –
Xin chào, tôi rất sẵn lòng chấp nhận email của bạn nhưng tôi không muốn đăng địa chỉ của mình ở đây. Tôi mới đến SO. Không thấy cách gửi email cho bạn qua tiểu sử của bạn. Nếu bạn có thể giải thích một cách khác để gửi email cho bạn, vui lòng thực hiện hoặc chỉ cần đăng địa chỉ email của bạn tại đây. –
Cảm ơn bạn. Địa chỉ email của tôi là [email protected] Tôi kiểm tra email đó mọi lúc. Bạn có thể gửi email cho tôi và sau đó tôi sẽ trả lời bạn. –