Thiết kế cơ sở dữ liệu nên tuân theo một mô hình thiết kế thông tin tổng quát hơn bắt nguồn từ mô hình thông tin khái niệm , tốt hơn là ở dạng Sơ đồ lớp UML (vì tính dễ hiểu của chúng). Sau đây là mô hình thông tin khái niệm cho vấn đề của bạn:
Một mô hình như vậy vẫn phải được bổ sung thêm các thuộc tính định danh chuẩn phù hợp và các kiểu dữ liệu để có được một mô hình thiết kế thông tin. Bằng cách loại bỏ các liên kết và thành phần (thay thế chúng bằng các thuộc tính tham chiếu), chúng ta có được mô hình lớp OO sau, có thể được sử dụng làm cơ sở để mã hóa Java / C # / PHP / etc. các lớp:
Lưu ý rằng chúng tôi đã thêm hỗ trợ cho các câu đố đa ngôn ngữ trong mô hình lớp OO này bằng cách thêm IsoLanguageCode
liệt kê và một TextItem
lớp có khóa chính hai phần bao gồm ID mục văn bản và mã ngôn ngữ như câu đố, câu hỏi và tùy chọn trả lời sử dụng ID mục văn bản để tham chiếu đến các mục văn bản được sử dụng làm tiêu đề, văn bản câu hỏi và văn bản trả lời của chúng. Cũng lưu ý rằng Quiz
lớp có thuộc tính dẫn xuất \availableLanguages
có thể được tính toán với sự trợ giúp của một truy vấn truy xuất tất cả các ngôn ngữ mà các mục văn bản cho tất cả các câu hỏi của bài kiểm tra và tất cả các tùy chọn trả lời của chúng, đều có sẵn.
Mô hình thiết kế cơ sở dữ liệu SQL có thể được bắt nguồn từ mô hình lớp OO như vậy bằng cách thay thế các thuộc tính tham chiếu bằng các thuộc tính khóa ngoại tương ứng: