Mô hình dữ liệu trong Entity Framework

Thiết lập cơ sở dữ liệu

Trong hướng dẫn này, chúng tôi sẽ sử dụng một cơ sở dữ liệu University đơn giản. Một cơ sở dữ liệu University có thể phức tạp hơn nhiều nhưng với mục đích demo và học tập, chúng tôi đang sử dụng hình thức đơn giản nhất của cơ sở dữ liệu này. Sơ đồ sau có chứa ba bảng.

  • Student (sinh viên)
  • Course (khóa học)
  • Enrollment (ghi danh)
Thiết lập cơ sở dữ liệu

Bất cứ khi nào thuật ngữ cơ sở dữ liệu được sử dụng, một điều sẽ xuất hiện ngay trong tâm trí của chúng tôi đó là mối quan hệ giữa các bảng. Có ba loại mối quan hệ giữa các bảng và nó tùy thuộc vào cách xác định các cột liên quan.

  • Mối quan hệ một-nhiều
  • Mối quan hệ nhiều-nhiều
  • Mối quan hệ một-một

Mối quan hệ một-nhiều

Mối quan hệ một-nhiều là loại quan hệ phổ biến nhất. Trong loại mối quan hệ này, một bản ghi trong bảng A có thể liên kết với nhiều bản ghi trong bảng B, nhưng một bản ghi trong bảng B chỉ có thể liên kết với một bản ghi trong bảng A.

Ví dụ: trong sơ đồ trên, bảng Student và Enrollment có quan hệ một nhiều. Một sinh viên có thể ghi danh nhiều môn học, nhưng mỗi ghi danh chỉ thuộc về một sinh viên.

Mối quan hệ nhiều-nhiều

Trong mối quan hệ nhiều-nhiều, một bản ghi trong bảng A có thể liên kết với nhiều bản ghi trong bảng B và ngược lại.

Bạn tạo mối quan hệ nhiều-nhiều bằng cách định nghĩa bảng thứ ba, được gọi là bảng nối, có khóa chính bao gồm các khóa ngoại từ cả bảng A và bảng B.

Ví dụ: bảng Student và Course có mối quan hệ nhiều-nhiều được xác định bởi mối quan hệ một-nhiều từ mỗi bảng này với bảng Enrollment.

Mối quan hệ một-một

Trong mối quan hệ một-một, một bản ghi trong bảng A có thể liên kết với tối đa một bản ghi trong bảng B và ngược lại. Mối quan hệ một-một được tạo nếu cả hai cột liên quan là khóa chính hoặc có các ràng buộc duy nhất.

Loại mối quan hệ này không phổ biến vì hầu hết các thông tin liên quan theo cách này có thể đưa vào một bảng duy nhất. Bạn có thể sử dụng mối quan hệ một-một trong các trường hợp sau:

  • Chia một bảng có nhiều cột thành nhiều bảng.
  • Cô lập một phần của bảng vì lý do bảo mật.
  • Lưu trữ dữ liệu tồn tại trong thời gian ngắn và có thể dễ dàng xóa bằng cách xóa bảng.
  • Lưu trữ thông tin chỉ áp dụng cho một tập hợp con của bảng chính.

Mô hình dữ liệu trong Entity Framework

Mô hình dữ liệu thực thể (EDM) là phiên bản mở rộng của mô hình mối quan hệ thực thể, chỉ định mô hình khái niệm của dữ liệu bằng cách sử dụng các kỹ thuật mô hình hóa khác nhau. Nó cũng đề cập đến một tập hợp các khái niệm mô tả cấu trúc dữ liệu, bất kể hình thức được lưu trữ của nó.

EDM hỗ trợ một tập hợp các kiểu dữ liệu nguyên thủy để định nghĩa các thuộc tính trong một mô hình khái niệm. Chúng ta cần xem xét 3 phần cốt lõi làm cơ sở cho khung thực thể và gọi chung là mô hình dữ liệu thực thể. Sau đây là ba phần cốt lõi của EDM:

  • Mô hình lược đồ lưu trữ (Storage Schema Model)
  • Mô hình khái niệm (Conceptual Model)
  • Mô hình ánh xạ (Mapping Model)

Mô hình lược đồ lưu trữ

Mô hình lưu trữ (Storage Schema Model) còn được gọi là lớp định nghĩa lược đồ lưu trữ (SSDL) đại diện cho lược đồ miêu tả của kho lưu trữ dữ liệu phụ trợ.

Mô hình lược đồ lưu trữ (edm) trong Entity Framework

Mô hình khái niệm

Mô hình khái niệm (Conceptual Model) còn được gọi là lớp định nghĩa lược đồ khái niệm (CSDL) là mô hình thực thể thực, dựa vào đó chúng tôi viết các truy vấn của mình.

Mô hình ánh xạ

Lớp ánh xạ chỉ là ánh xạ giữa mô hình khái niệm và mô hình lưu trữ.

Lược đồ logic và ánh xạ của nó với lược đồ vật lý được biểu diễn dưới dạng EDM.

  • Visual Studio cung cấp Entity Designer để tạo EDM trực quan và đặc tả ánh xạ.
  • Đầu ra của công cụ này là file XML (*.edmx) định nghĩa lược đồ và ánh xạ.
  • File Edmx chứa các siêu dữ liệu của Entity Framework.

Ngôn ngữ định nghĩa lược đồ

Entity Framework ADO.NET sử dụng ngôn ngữ định nghĩa dữ liệu dựa trên XML được gọi là ngôn ngữ định nghĩa lược đồ (SDL) để định nghĩa lược đồ EDM.

  • SDL định nghĩa các kiểu dữ liệu đơn giản tương tự như các kiểu dữ liệu nguyên thủy khác, bao gồm String, Int32, Double, Decimal, và DateTime, và các kiểu khác.
  • Một enum định nghĩa ánh xạ của các giá trị và tên nguyên thủy, cũng được coi là một kiểu dữ liệu đơn giản.
  • Enum chỉ được hỗ trợ từ phiên bản Entity Framework 5.0 trở đi.
  • Các kiểu dữ liệu phức tạp được tạo ra từ một tập hợp của các kiểu dữ liệu khác. Một tập hợp các thuộc tính của các kiểu dữ liệu này định nghĩa kiểu thực thể.

Mô hình dữ liệu chủ yếu có ba khái niệm chính để mô tả cấu trúc dữ liệu:

  • Kiểu thực thể.
  • Loại liên kết.
  • Thuộc tính.

Kiểu thực thể

Kiểu thực thể là khối xây dựng cơ bản để mô tả cấu trúc dữ liệu trong EDM.

  • Trong một mô hình khái niệm, các kiểu thực thể được xây dựng từ các thuộc tính và mô tả cấu trúc của các khái niệm cấp cao nhất, chẳng hạn như Student và Enrollment trong một ứng dụng.
  • Một thực thể đại diện cho một đối tượng cụ thể như Student hoặc Enrollment cụ thể.
  • Mỗi thực thể phải có một khóa thực thể duy nhất trong một tập thực thể. Một tập thực thể là một tập hợp các thể hiện của một kiểu thực thể cụ thể. Các tập thực thể (và tập liên kết) được nhóm hợp lý trong một thùng chứa các thực thể.
  • Kế thừa được hỗ trợ với các kiểu thực thể, nghĩa là một loại thực thể có thể được bắt nguồn từ kiểu khác.
Thực thể trong Entity Framework

Loại liên kết

Nó là một khối xây dựng cơ bản khác để mô tả các mối quan hệ trong EDM. Trong một mô hình khái niệm, một liên kết thể hiện mối quan hệ giữa hai kiểu thực thể như Student và Enrollment.

  • Mỗi liên kết có hai đầu cuối để xác định các kiểu thực thể liên quan đến liên kết.
  • Mỗi đầu cuối của liên kết cũng chỉ định bội số cho biết số lượng thực thể có thể ở cuối liên kết.
  • Một bội số đầu cuối liên kết có thể có giá trị một (1), 0 hoặc một (0..1) hoặc nhiều (*).
  • Các thực thể ở một đầu của một liên kết có thể được truy cập thông qua các thuộc tính điều hướng hoặc thông qua các khóa ngoại nếu chúng được hiển thị trên một kiểu thực thể.

Thuộc tính

Các kiểu thực thể chứa các thuộc tính định nghĩa cấu trúc và đặc điểm của chúng. Ví dụ: kiểu thực thể Student có thể có các thuộc tính như Id, Name, v.v.

Một thuộc tính có thể chứa dữ liệu nguyên thủy (như chuỗi, số nguyên hoặc giá trị Boolean) hoặc dữ liệu có cấu trúc (như kiểu phức tạp).



Bài viết liên quan:

2 kịch bản lưu dữ liệu trong Entity Framework Core là kịch bản được kết nối và kịch bản ngắt kết nối.

Tạo ứng dụng .NET Core Console đầu tiên và cấu hình sử dụng Entity Framework Core.

Truy vấn trong Entity Framework Core có gì mới? Truy vấn trong EF Core khác EF ở những điểm nào.