Hướng dẫn thiết kế cơ sở dữ liệu cho Google Calendar
(kb.databasedesignbook.com)Giới thiệu
Trong hướng dẫn thiết kế cơ sở dữ liệu này, chúng ta sẽ xem cách thiết kế các bảng cơ sở dữ liệu cho một dự án thực tế phức tạp. Chúng ta sẽ thiết kế một bản sao của Google Calendar. Loạt bài này giải thích cách tiếp cận trong cuốn sách "Database Design using Minimal Modeling". Trước tiên, chúng ta sẽ xây dựng một mô hình logic hoàn chỉnh mô tả dữ liệu lịch, sau đó tiến hành thiết kế bảng dựa trên mô hình logic.
Đối tượng độc giả
Mục tiêu của cuốn sách này là giúp bạn đi từ một ý tưởng còn mơ hồ đến định nghĩa hoàn chỉnh của các bảng cơ sở dữ liệu. Ba phần tư đầu của nội dung chỉ yêu cầu hiểu biết chung về cơ sở dữ liệu và giải thích về mô hình logic. Một phần tư cuối giải thích cách chuyển từ mô hình logic sang cấu trúc bảng vật lý.
Mục lục
- Giới thiệu
- Cách tiếp cận của cuốn sách này
- Mô tả vấn đề
- Phần 1: Sự kiện cả ngày cơ bản
- Phần 2: Sự kiện theo thời gian
- Phần 3: Sự kiện cả ngày lặp lại
- Phần 4: Kết xuất trang lịch
- Phần 5: Kết xuất trang lịch cho sự kiện theo thời gian
- Phần 6: Mô hình logic hoàn chỉnh cho đến thời điểm này
- Phần 7: Tạo bảng SQL
- Kết luận
- Bước tiếp theo
Cách tiếp cận của cuốn sách này
Mọi người thường bắt đầu từ thiết kế bảng, nhưng ở đây chúng ta chọn một cách tiếp cận khác. Trước tiên, ta xây dựng mô hình logic và xác định các thuộc tính dữ liệu cũng như mối quan hệ giữa các thực thể. Khi mô hình logic đã được quyết định, ta mới thiết kế các bảng vật lý.
Mô tả vấn đề
Chúng ta sẽ triển khai các tính năng chính của Google Calendar. Dữ liệu liên quan đến người dùng sẽ được triển khai ở mức tối thiểu. Sự kiện có các thuộc tính như tiêu đề, mô tả, địa điểm, v.v. Phần phức tạp nhất là thời gian và ngày tháng.
Part 1: Sự kiện cả ngày cơ bản
Anchor
Trước tiên, cần xác định các anchor. Anchor là các thực thể, ví dụ như người dùng (User) và sự kiện (Event). Anchor xử lý ID và việc đếm.
Thuộc tính người dùng
Chúng ta sẽ mô hình hóa lượng dữ liệu tối thiểu về người dùng. Ví dụ như email.
Thuộc tính của sự kiện cả ngày
Cần lưu tên sự kiện, ngày bắt đầu và ngày kết thúc.
Liên kết
Cần quyết định nơi lưu thông tin về việc một người dùng cụ thể đã tạo một sự kiện cụ thể. Phần này được xử lý như một liên kết thay vì một thuộc tính.
Part 2: Sự kiện theo thời gian
Múi giờ
Múi giờ được sử dụng ở nhiều quốc gia và khu vực. Định nghĩa múi giờ đôi khi thay đổi. Chúng ta sẽ triển khai một mô hình tối thiểu liên quan đến múi giờ.
Thuộc tính múi giờ
Chúng ta sẽ lưu tên múi giờ mà con người có thể đọc được.
Thuộc tính của sự kiện theo thời gian
Chúng ta sẽ lưu tên sự kiện, thời gian bắt đầu và thời gian kết thúc. Sử dụng thời gian cục bộ.
Liên kết
Xác định liên kết giữa múi giờ và sự kiện theo thời gian.
Điểm tương đồng giữa sự kiện theo ngày và sự kiện theo thời gian
Chúng ta sẽ xem xét những điểm tương đồng giữa hai loại sự kiện. Mô hình hóa logic cho phép trì hoãn việc ra quyết định.
Part 3: Sự kiện cả ngày lặp lại
Thuộc tính #1, chu kỳ
Xác định thuộc tính về mức độ thường xuyên mà sự kiện lặp lại.
Thuộc tính #2, các thuộc tính đan xen
Xác định chu kỳ của sự kiện lặp lại.
Thuộc tính #3
Đối với sự kiện theo tháng, xác định xem nó lặp lại vào cùng một ngày hay cùng một thứ trong tuần.
Thứ trong tuần: micro-anchor
Quyết định nơi lưu thứ trong tuần. Giới thiệu một anchor mới.
Liên kết
Xác định liên kết giữa thứ trong tuần và sự kiện.
Kiểm tra mức độ hoàn tất
Để xác nhận việc mô hình hóa đã hoàn tất hay chưa, chúng ta sẽ xem lại các yêu cầu ban đầu.
Giới hạn lặp lại: các thuộc tính đan xen hơn nữa
Xác định thuộc tính về thời điểm sự kiện sẽ lặp lại cho đến khi nào.
Part 4: Kết xuất trang lịch
Cho đến lúc này, chúng ta đã bàn về phần ghi chép của lịch. Giờ đây cần hiển thị chế độ xem lịch tuần của người dùng.
Tóm tắt của GN⁺
Hướng dẫn này giải thích từng bước cách thiết kế một cơ sở dữ liệu phức tạp để cả người mới bắt đầu cũng có thể dễ hiểu. Bằng cách mô hình hóa các tính năng chính của Google Calendar, bài viết cung cấp một ví dụ hữu ích có thể áp dụng cho các dự án thực tế. Bài viết cũng giải thích cách mô hình hóa logic giúp tránh lỗi trong thiết kế cơ sở dữ liệu và dẫn tự nhiên sang thiết kế bảng vật lý. Một dự án có tính năng tương tự là Microsoft Outlook Calendar.
Chưa có bình luận nào.