Bài viết này chủ yếu được viết cho người mới bắt đầu. Tuy nhiên, nó bao gồm một số khái niệm thiết kế cơ sở dữ liệu thú vị và thường bị lãng quên nhưng cũng hấp dẫn không kém đối với các chuyên gia cơ sở dữ liệu SQL.
Phần hiện tại tập trung vào các khái niệm thiết kế cơ sở dữ liệu và ánh xạ của chúng tới các bảng, cột và mối quan hệ của Cơ sở dữ liệu SQL. Nếu bạn hiểu nền tảng của cơ sở dữ liệu và công cụ chúng tôi sắp sử dụng, bạn sẽ tự tin thiết kế cơ sở dữ liệu SQL đầu tiên của mình.
Điều kiện tiên quyết
Trước khi chúng tôi tiếp tục, hãy đảm bảo có những điều sau:
- SQL Server 2016/2017/2019 Phiên bản Express / Developer được cài đặt trên máy của bạn
- SSMS (SQL Server Management Studio) đã được cài đặt
Ngoài ra, bạn cần có kiến thức cơ bản về cơ sở dữ liệu và các công cụ trên.
Sẽ không thành vấn đề nếu bạn không có phiên bản SQL Server và SSMS mới nhất. Tuy nhiên, chúng tôi khuyên bạn nên có các phiên bản mới hơn, nếu không phải là những phiên bản mới nhất có sẵn. Bạn có thể lấy các phiên bản cần thiết từ các tài nguyên bên dưới:
- Tải xuống phiên bản dành cho Nhà phát triển SQL Server 2017.
- Tải xuống SQL Server 2019 (cách khác, để tải xuống phiên bản SQL Server Express / Developer mới nhất).
- Hoặc, tải xuống phiên bản chuyên biệt miễn phí của Máy chủ SQL dành cho nhà phát triển hoặc Express.
- Tải xuống SSMS (SQL Server Management Studio)
Lưu ý rằng các liên kết này đều hoạt động tốt tại thời điểm viết bài này. Nếu Microsoft quyết định thay thế chúng, vui lòng tải xuống phiên bản mới hơn hiện có.
Giới thiệu về thiết kế cơ sở dữ liệu SQL
Để bắt đầu thiết kế cơ sở dữ liệu SQL của bạn với SQL Server Management Studio (SSMS), bạn phải có một số kế hoạch thiết kế trong đầu.
Thật không dễ dàng nếu không biết các khái niệm cốt lõi của thiết kế cơ sở dữ liệu. Tuy nhiên, một khi bạn nắm được các khái niệm này và việc triển khai chúng, bạn sẽ bắt đầu tuân theo các nguyên tắc thiết kế một cách tự nhiên. Nó phổ biến với hầu hết các nhà phát triển cơ sở dữ liệu.
Trước tiên, hãy để chúng tôi đi qua một số khái niệm thiết kế cơ sở dữ liệu cốt lõi. Thật không dễ dàng để trình bày tất cả chúng trong một bài viết, nhưng chúng ta cần một cái gì đó để bắt đầu.
Chúng tôi hiểu một cơ sở dữ liệu điển hình về những điều sau:
- Thực thể
- Các thuộc tính
- Mối quan hệ
Thực thể là gì?
Thực thể là bất kỳ thứ gì mà doanh nghiệp hoặc cá nhân muốn lưu trữ trong cơ sở dữ liệu. Ví dụ:
- Khách hàng.
- Đặt hàng.
- Sản phẩm.
Có thể nói rằng một Khách hàng là một thực thể nếu doanh nghiệp muốn lưu trữ nó trong một cấu trúc cơ sở dữ liệu cho các mục đích giao dịch, phân tích và báo cáo. Tương tự, một Đơn đặt hàng do Khách hàng đặt cũng là một thực thể nếu doanh nghiệp muốn xem thông tin đó. Do đó, thông tin này phải là một phần của cơ sở dữ liệu.
Tuy nhiên, một Đơn đặt hàng không có ý nghĩa gì nếu không có Sản phẩm . Sản phẩm được cung cấp cho Khách hàng cũng là một thực thể.
Thực thể được ánh xạ đến cơ sở dữ liệu như thế nào?
Từ góc độ cơ sở dữ liệu, một thực thể có thể được ánh xạ tới một bảng. Do đó, nếu một doanh nghiệp cần các thực thể Khách hàng, Đơn đặt hàng và Sản phẩm, thì nhà phát triển cơ sở dữ liệu có thể ánh xạ chúng thành ba bảng.
Thuộc tính là gì?
Thuộc tính là mô tả của một thực thể. Ví dụ:
- Tên khách hàng
- OrderType
- Tên sản phẩm
Nếu Khách hàng là một tổ chức, tên của khách hàng ( Tên khách hàng ) là một thuộc tính. Thuộc tính này mô tả pháp nhân của chúng tôi ( Khách hàng ). Tương tự, OrderType là một thuộc tính của Đơn đặt hàng thực thể và Tên sản phẩm là một thuộc tính của Sản phẩm thực thể.
Thuộc tính được ánh xạ đến cơ sở dữ liệu như thế nào?
Một thuộc tính, chẳng hạn như Tên khách hàng, mô tả Khách hàng bảng và có thể được ánh xạ tới một cột trong bảng đó.
Một thực thể có nhiều thuộc tính
Nó là tốt cho một thực thể có nhiều thuộc tính. Do đó, chúng ta có thể có nhiều cột (thuộc tính) trong một bảng (thực thể).
Mối quan hệ thực thể
Một thực thể có thể liên quan đến một thực thể khác thông qua các mối quan hệ. Một bảng có thể liên quan đến một bảng khác. Có nhiều loại thực thể hoặc mối quan hệ dạng bảng:
Mối quan hệ Khách hàng-Đơn đặt hàng (một-nhiều)
Một Khách hàng (thực thể / bảng) có thể liên quan đến một Đơn hàng (thực thể / bảng) vì những lý do sau:
- Một khách hàng có thể đặt một đơn hàng.
- Một khách hàng có thể đặt nhiều đơn hàng.
Điều ngược lại cũng đúng:
- Một khách hàng có thể đặt nhiều đơn hàng.
- Một khách hàng có thể đặt một đơn hàng.
Đây là ví dụ về mối quan hệ một-nhiều :một khách hàng có thể đặt nhiều đơn hàng và một khách hàng có thể đặt nhiều đơn hàng.
Mối quan hệ Sản phẩm-Đơn đặt hàng (một-nhiều)
Một Sản phẩm (thực thể / bảng) có thể liên quan đến một Đơn hàng (thực thể / bảng) như sau:
- Một sản phẩm có thể được chỉ định cho một đơn đặt hàng.
- Một sản phẩm có thể được giao cho nhiều đơn đặt hàng.
Tương tự:
- Nhiều đơn đặt hàng có thể được chỉ định cho một sản phẩm.
- Một đơn đặt hàng có thể có một sản phẩm.
Có mối quan hệ một-nhiều giữa Sản phẩm và Đặt hàng .
Mối quan hệ Khách hàng-Sản phẩm (nhiều với nhiều)
Bây giờ mối quan hệ giữa khách hàng và sản phẩm được giải thích như sau:
- Một khách hàng có thể mua một sản phẩm.
- Một khách hàng có thể mua nhiều sản phẩm.
- Khách hàng có thể mua một sản phẩm.
- Nhiều khách hàng có thể mua một sản phẩm.
Nhiều khách hàng có thể mua nhiều sản phẩm, có nghĩa là Khách hàng và Sản phẩm mối quan hệ nhiều-nhiều .
Hãy xem hình minh họa bên dưới:
Kịch bản thiết kế dành cho sinh viên-giảng viên
Hãy xem xét một kịch bản thiết kế cơ sở dữ liệu khác. Bạn sẽ triển khai nó bằng SSMS (SQL Server Management Studio) trong phần khác của bài viết này.
Yêu cầu kinh doanh
Giả sử bạn cần thiết kế một cơ sở dữ liệu lưu trữ các thông tin sau:
- (Các) sinh viên.
- (Các) người hướng dẫn.
- Những sinh viên đã được chỉ định một người hướng dẫn.
- Người hướng dẫn được chỉ định cho học sinh.
Phân tích sơ bộ
Khi quan sát kỹ, bạn sẽ phát hiện ra một điều khá thú vị về những yêu cầu trên. “Các sinh viên đã chỉ định một giáo viên hướng dẫn” và “Các giảng viên đã được chỉ định cho sinh viên” là cùng một yêu cầu.
Có thể thường xuyên xảy ra trường hợp hai yêu cầu trông khác nhau nhưng lại giống nhau trong bối cảnh thiết kế cơ sở dữ liệu.
Xác định các thực thể
Các thực thể sau có thể được trích xuất ngay từ các yêu cầu:
- Sinh viên
- Người hướng dẫn
Tuy nhiên, một tổ chức khác cung cấp cho chúng tôi thông tin về các giảng viên được phân bổ cho sinh viên.
Hãy nhớ lại ví dụ đầu tiên chúng ta sử dụng bảng Đơn đặt hàng - nhiều khách hàng có thể mua nhiều đơn đặt hàng trong mối quan hệ Khách hàng - Đơn đặt hàng. Nó tương tự như người hướng dẫn sinh viên của chúng tôi mối quan hệ dạng bảng - nhiều giảng viên có thể được phân bổ cho nhiều sinh viên.
Xác định các thuộc tính
Chúng tôi có thể chọn các thuộc tính hữu ích cho các thực thể đã xác định, theo tình huống đặt hàng của khách hàng đó:
- Sinh viên:Mã số sinh viên, Tên.
- Người hướng dẫn:Tên, ID người hướng dẫn.
- Sinh viên-giảng viên:ID sinh viên-giảng viên, ID sinh viên, ID giảng viên.
Mối quan hệ danh tính:
Xác định các mối quan hệ của thực thể:
- Sinh viên -> Sinh viên-Người hướng dẫn (một-nhiều).
- Người hướng dẫn-> Sinh viên-Người hướng dẫn (một đến nhiều người).
- Sinh viên -> Người hướng dẫn (nhiều người).
Hãy nhớ rằng chúng ta luôn sử dụng bảng giữa để giải quyết mối quan hệ nhiều-nhiều. Đó là lý do tại sao chúng tôi đưa thực thể Sinh viên-Giảng viên vào kế hoạch.
Ánh xạ các thực thể và thuộc tính thành bảng và cột
Bây giờ chúng ta có thể ánh xạ các thực thể thành các bảng. Do đó, chúng ta sẽ tạo ba bảng sau:
- Sinh viên.
- Người hướng dẫn.
- Sinh viên-Người hướng dẫn.
Tương tự, các thuộc tính của các thực thể đó, khi được ánh xạ tới các cột, sẽ như sau:
- Sinh viên:StudentId, Name.
- Người hướng dẫn:Người hướng dẫn, Tên.
- Sinh viên-Người hướng dẫn:StudentInstructorId, StudentId, Người hướng dẫnId.
Lưu ý hình minh họa bên dưới:
Xin chúc mừng! Bạn đã học thành công các khái niệm thiết kế cơ sở dữ liệu. Chúng ta đã quen thuộc với các thực thể, thuộc tính và mối quan hệ cũng như các bước để ánh xạ chúng thành các bảng và cột trong cơ sở dữ liệu.
Các bài viết tiếp theo sẽ hướng dẫn bạn các bước thiết kế cơ sở dữ liệu bằng SSMS (SQL Server Management Studio).
Việc cần làm
Bây giờ bạn đã hiểu những kiến thức cơ bản về thiết kế cơ sở dữ liệu, hãy thử những điều sau để cải thiện kỹ năng của bạn hơn nữa:
- Cố gắng thêm một thực thể khác có tên là Nhà cung cấp với các thuộc tính SupplierId và SupplierName. Kiểm tra xem bạn có thể xác định chính xác các mối quan hệ sau đây không:
- Nhà cung cấp-Đơn đặt hàng;
- Nhà cung cấp-Khách hàng;
- Nhà cung cấp-Sản phẩm.
- Thiết kế cơ sở dữ liệu cùng với việc xác định các thực thể, thuộc tính và mối quan hệ cho thư viện. Gợi ý:Sách được phát cho các thành viên và các thành viên mượn sách từ thư viện. Thành viên, Sách, Đã phát hành có thể là các thực thể.
- Xác định loại mối quan hệ dạng bảng sau cho các thực thể như đã đề cập ở trên:
- Thành viên cấp;
- Sách đã được phát hành;
- Sổ thành viên;
- Sách-Thành viên.
Cũng đọc
Học thiết kế cơ sở dữ liệu với SQL Server Management Studio (SSMS) - Phần 2