tek4

Mô hình quan hệ trong hệ quản trị cơ sở dữ liệu DBMS

by - September. 26, 2021
Kiến thức
Học
<h2 style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/5c3317f1-2fb8-4b8e-b19b-3d896075dd79" alt="a-17" /></h2> <p style="text-align: center;">Ảnh chụp bởi&nbsp;<a href="https://unsplash.com/@ladysaturday">PTMP</a></p> <h2 style="text-align: justify;">M&ocirc; h&igrave;nh quan hệ dữ liệu</h2> <p style="text-align: justify;">M&ocirc; h&igrave;nh quan hệ dữ liệu, tiếng anh l&agrave; Relational Data Model, biểu diễn cơ sở dữ liệu dưới dạng một tập hợp c&aacute;c quan hệ, trong đ&oacute; một quan hệ l&agrave; một bảng chứa c&aacute;c gi&aacute; trị của c&aacute;c dữ liệu. Mỗi h&agrave;ng trong bảng đại diện cho c&aacute;c gi&aacute; trị của dữ liệu đ&oacute;. C&aacute;c h&agrave;ng trong bảng biểu thị một mối quan hệ n&agrave;o đ&oacute; hoặc một thực thể cụ thể. T&ecirc;n của c&aacute;c bảng v&agrave; c&aacute;c cột gi&uacute;p giải th&iacute;ch r&otilde; r&agrave;ng hơn về &yacute; nghĩa của c&aacute;c gi&aacute; trị trong mỗi h&agrave;ng. Dữ liệu được biểu diễn dưới dạng một tập hợp c&aacute;c quan hệ. Trong m&ocirc; h&igrave;nh quan hệ, dữ liệu được lưu trữ dưới dạng bảng. Tuy nhi&ecirc;n, c&aacute;ch thức lưu trữ vật l&yacute; của c&aacute;c dữ liệu ho&agrave;n to&agrave;n độc lập với c&aacute;ch thức m&agrave; dữ liệu được sắp xếp theo một c&aacute;ch logic.</p> <p style="text-align: justify;">3 hệ quản trị cơ sở dữ liệu quan hệ phổ biến:</p> <ul style="text-align: justify;"> <li>DB2 v&agrave; M&aacute;y chủ Informix - IBM</li> <li>Oracle v&agrave; Oracle RDB - Oracle</li> <li>SQL Server v&agrave; Access - Microsoft</li> </ul> <h2 style="text-align: justify;">Kh&aacute;i niệm li&ecirc;n quan</h2> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/a9dcaefa-297f-413d-bd2b-25f4c6272166" alt="Capture-188" /></p> <ul style="text-align: justify;"> <li>Thuộc t&iacute;nh - Attribute: tương ứng với mỗi cột trong một bảng. C&aacute;c thuộc t&iacute;nh sẽ x&aacute;c định một quan hệ cụ thể. V&iacute; dụ về c&aacute;c thuộc t&iacute;nh như: Sinh vi&ecirc;n, T&ecirc;n sinh vi&ecirc;n, Số b&aacute;o danh.</li> <li>Bảng - Table: Trong m&ocirc; h&igrave;nh quan hệ, c&aacute;c quan hệ được lưu ở dạng bảng. N&oacute; được lưu trữ c&ugrave;ng với c&aacute;c thực thể của n&oacute;. Một bảng c&oacute; hai th&agrave;nh phần l&agrave; h&agrave;ng v&agrave; cột. H&agrave;ng đại diện cho c&aacute;c dữ liệu v&agrave; cột đại diện cho thuộc t&iacute;nh.</li> <li>Dữ liệu - Tuple: chứa một bản ghi hay một dữ liệu duy nhất, hay n&oacute;i c&aacute;ch kh&aacute;c tuple ch&iacute;nh l&agrave; h&agrave;ng (row) trong một bảng.</li> <li>Lược đồ quan hệ - Relation Schema: Một lược đồ quan hệ biểu thị t&ecirc;n của quan hệ với c&aacute;c thuộc t&iacute;nh của n&oacute;.</li> <li>Độ - Degree: Số lượng thuộc t&iacute;nh c&oacute; trong một mối quan hệ được gọi l&agrave; độ của mối quan hệ đ&oacute;.</li> <li>Lực lượng - Cardinality: Số lượng c&aacute;c h&agrave;ng c&oacute; trong một bảng.</li> <li>Cột - Column: Cột đại diện cho tập hợp c&aacute;c gi&aacute; trị của một thuộc t&iacute;nh cụ thể trong bảng.</li> <li>Biểu hiện của quan hệ - Relation instance: Biểu hiện của quan hệ l&agrave; một tập hợp hữu hạn c&aacute;c dữ liệu đơn lẻ trong hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). C&aacute;c biểu hiện kh&ocirc;ng bao giờ c&oacute; c&aacute;c bộ dữ liệu tr&ugrave;ng lặp.</li> <li>Kh&oacute;a quan hệ - Relation key: Mỗi h&agrave;ng c&oacute; một, hai hoặc nhiều thuộc t&iacute;nh, được gọi l&agrave; kh&oacute;a quan hệ.</li> <li>Phạm vi thuộc t&iacute;nh - Attribute domain: Mỗi thuộc t&iacute;nh đều c&oacute; một số gi&aacute; trị v&agrave; phạm vi được x&aacute;c định trước.</li> </ul> <h2 style="text-align: justify;">R&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn c&oacute; t&iacute;nh quan hệ</h2> <p style="text-align: justify;">C&aacute;c r&agrave;ng buộc to&agrave;n vẹn c&oacute; t&iacute;nh quan hệ trong DBMS li&ecirc;n quan tới c&aacute;c điều kiện cụ thể được &aacute;p dụng cho một quan hệ để đảm bảo n&oacute; l&agrave; hợp lệ. C&oacute; nhiều loại r&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn trong DBMS. C&aacute;c r&agrave;ng buộc trong hệ quản trị cơ sở dữ liệu quan hệ chủ yếu được chia th&agrave;nh ba loại ch&iacute;nh l&agrave;:</p> <ul style="text-align: justify;"> <li>R&agrave;ng buộc về phạm vi</li> <li>R&agrave;ng buộc về kh&oacute;a</li> <li>R&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn c&oacute; tham chiếu</li> </ul> <h3 style="text-align: justify;">R&agrave;ng buộc về phạm vi</h3> <p style="text-align: justify;">C&aacute;c r&agrave;ng buộc về phạm vi c&oacute; thể bị vi phạm nếu một gi&aacute; trị của thuộc t&iacute;nh kh&ocirc;ng tồn tại trong phạm vi tương ứng hoặc n&oacute; kh&ocirc;ng thuộc kiểu dữ liệu ph&ugrave; hợp.</p> <p style="text-align: justify;">C&aacute;c r&agrave;ng buộc về phạm vi quy định mỗi bộ dữ liệu đơn lẻ v&agrave; gi&aacute; trị của mỗi thuộc t&iacute;nh phải l&agrave; duy nhất. Điều n&agrave;y được x&aacute;c định l&agrave; c&aacute;c kiểu dữ liệu bao gồm kiểu dữ liệu chuẩn như l&agrave; số nguy&ecirc;n, số thực, k&yacute; tự, Boolean, chuỗi,...</p> <p style="text-align: justify;">V&iacute; dụ:&nbsp;Tạo một r&agrave;ng buộc về phạm vi sao cho CustomerName kh&ocirc;ng phải l&agrave; gi&aacute; trị NULL.</p> <p style="text-align: justify;">Create DOMAIN CustomerName</p> <p style="text-align: justify;">CHECK (value not NULL)</p> <h3 style="text-align: justify;">R&agrave;ng buộc về kh&oacute;a</h3> <p style="text-align: justify;">Một thuộc t&iacute;nh c&oacute; thể x&aacute;c định duy nhất một dữ liệu đơn lẻ trong một quan hệ được gọi l&agrave; kh&oacute;a của bảng. Gi&aacute; trị của thuộc t&iacute;nh cho c&aacute;c dữ liệu đơn lẻ kh&aacute;c nhau trong mối quan hệ phải l&agrave; duy nhất.</p> <p style="text-align: justify;">V&iacute; dụ:</p> <p style="text-align: justify;">Ở bảng đ&atilde; cho, ID Nh&acirc;n vi&ecirc;n l&agrave; một thuộc t&iacute;nh l&agrave; kh&oacute;a ch&iacute;nh của bảng nh&acirc;n vi&ecirc;n. Mỗi kh&oacute;a duy nhất sẽ được sử dụng để x&aacute;c định cho mỗi nh&acirc;n vi&ecirc;n.</p> <table style="height: 238px;" width="899"> <tbody> <tr> <td width="208">ID Nh&acirc;n vi&ecirc;n</td> <td width="208">T&ecirc;n</td> <td width="208">Trạng th&aacute;i</td> </tr> <tr> <td width="208">1</td> <td width="208">A</td> <td width="208">L&agrave;m việc</td> </tr> <tr> <td width="208">2</td> <td width="208">B</td> <td width="208">L&agrave;m việc</td> </tr> <tr> <td width="208">3</td> <td width="208">C</td> <td width="208">Nghỉ việc</td> </tr> </tbody> </table> <h3 style="text-align: justify;">R&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn c&oacute; tham chiếu</h3> <p style="text-align: justify;">C&aacute;c r&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn c&oacute; tham chiếu trong hệ quản trị cơ sở dữ liệu dựa tr&ecirc;n phạm vi kh&aacute;i niệm của kh&oacute;a ngoại. Kh&oacute;a ngoại l&agrave; một thuộc t&iacute;nh quan trọng của một quan hệ m&agrave; n&oacute; sẽ được tham chiếu đến ở trong c&aacute;c quan hệ kh&aacute;c. Trạng th&aacute;i về r&agrave;ng buộc to&agrave;n vẹn c&oacute; tham chiếu xảy ra khi c&oacute; một quan hệ tham chiếu đến một thuộc t&iacute;nh kh&oacute;a của một quan hệ kh&aacute;c hoặc c&ugrave;ng một quan hệ. Tuy nhi&ecirc;n, thuộc t&iacute;nh kh&oacute;a đ&oacute; phải tồn tại trong bảng.</p> <p style="text-align: justify;">V&iacute; dụ:</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/97afd1ab-aa94-48c7-be4a-7a154d7a629f" alt="Capture-183" /></p> <p style="text-align: justify;">Trong v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta c&oacute; 2 mối quan hệ l&agrave; bảng Nh&acirc;n vi&ecirc;n v&agrave; bảng Lương. H&agrave;ng ID Nh&acirc;n vi&ecirc;n = 1 được tham chiếu 1 lần trong bảng Lương. V&igrave; vậy, ch&uacute;ng ta c&oacute; thể biết T&ecirc;n = A c&oacute; số tiền lương l&agrave; $100.</p> <h2 style="text-align: justify;">C&aacute;c thao t&aacute;c trong m&ocirc; h&igrave;nh quan hệ</h2> <p style="text-align: justify;">C&oacute; bốn thao t&aacute;c cơ bản được thực hiện tr&ecirc;n m&ocirc; h&igrave;nh cơ sở dữ liệu quan hệ l&agrave;: Insert, Update, Delete v&agrave; Select.</p> <ol style="text-align: justify;"> <li>Insert được sử dụng để th&ecirc;m dữ liệu v&agrave;o trong quan hệ.</li> <li>Delete được sử dụng để x&oacute;a c&aacute;c bộ gi&aacute; trị khỏi bảng.</li> <li>Update cho ph&eacute;p bạn thay đổi gi&aacute; trị của một số thuộc t&iacute;nh trong c&aacute;c dữ liệu hiện c&oacute;.</li> <li>Select cho ph&eacute;p bạn chọn một phạm vi dữ liệu cụ thể.</li> </ol> <p style="text-align: justify;">Bất cứ khi n&agrave;o một trong c&aacute;c t&aacute;c vụ n&agrave;y được &aacute;p dụng, c&aacute;c r&agrave;ng buộc về t&iacute;nh to&agrave;n vẹn đ&atilde; được định nghĩa tr&ecirc;n lược đồ cơ sở dữ liệu quan hệ th&igrave; sẽ kh&ocirc;ng bao giờ được vi phạm.</p> <h3 style="text-align: justify;">Insert</h3> <p style="text-align: justify;">Thao t&aacute;c ch&egrave;n cung cấp c&aacute;c gi&aacute; trị của thuộc t&iacute;nh cho một dữ liệu mới sẽ được th&ecirc;m v&agrave;o một quan hệ.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/23ab38e6-b3d4-4ef3-86dc-6285090f6f03" alt="Capture-184" /></p> <h3 style="text-align: justify;">Update</h3> <p style="text-align: justify;">Bạn c&oacute; thể thấy rằng trong bảng quan hệ dưới đ&acirc;y, T&ecirc;n = 'C' được cập nhật từ trạng th&aacute;i L&agrave;m việc sang trạng th&aacute;i Nghỉ việc.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/816e22c8-206d-45f0-af23-b029a0cbce52" alt="Capture-185" /></p> <h3 style="text-align: justify;">Delete</h3> <p style="text-align: justify;">Để thực hiện việc x&oacute;a, một điều kiện n&agrave;o đ&oacute; dựa v&agrave;o thuộc t&iacute;nh của mối quan hệ sẽ thực hiện chọn một dữ liệu cần x&oacute;a.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/90f77053-c863-4ae6-934e-d8ae6b2ecf25" alt="Capture-186" /></p> <p style="text-align: justify;">Trong v&iacute; dụ tr&ecirc;n, T&ecirc;n = "C" đ&atilde; bị x&oacute;a khỏi bảng.</p> <p style="text-align: justify;">Thao t&aacute;c Delete c&oacute; thể vi phạm t&iacute;nh to&agrave;n vẹn c&oacute; tham chiếu nếu dữ liệu bị x&oacute;a được tham chiếu bởi c&aacute;c kh&oacute;a ngoại từ c&aacute;c dữ liệu kh&aacute;c trong c&ugrave;ng một cơ sở dữ liệu.</p> <h3 style="text-align: justify;">Select</h3> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/ed25f166-531a-41d6-8e2e-c6dd793cf305" alt="Capture-187" /></p> <p style="text-align: justify;">Trong v&iacute; dụ ở tr&ecirc;n, T&ecirc;n = "A" được chọn để tạo ra một bảng ri&ecirc;ng.</p> <h2 style="text-align: justify;">C&aacute;c ti&ecirc;u chuẩn cho một m&ocirc; h&igrave;nh quan hệ</h2> <ul style="text-align: justify;"> <li>Dữ liệu cần được biểu diễn dưới dạng tập hợp c&aacute;c quan hệ</li> <li>Mỗi mối quan hệ n&ecirc;n được m&ocirc; tả r&otilde; r&agrave;ng trong bảng</li> <li>Mỗi h&agrave;ng phải chứa dữ liệu về c&aacute;c biểu hiện của một thực thể</li> <li>C&aacute;c cột phải chứa dữ liệu về c&aacute;c thuộc t&iacute;nh của thực thể</li> <li>C&aacute;c &ocirc; của bảng chỉ chứa một gi&aacute; trị duy nhất</li> <li>Mỗi cột chỉ được đặt một t&ecirc;n duy nhất</li> <li>Kh&ocirc;ng thể tồn tại hai h&agrave;ng giống hệt nhau</li> <li>C&aacute;c gi&aacute; trị của một thuộc t&iacute;nh phải tồn tại trong c&ugrave;ng một phạm vi</li> </ul> <h2 style="text-align: justify;">Ưu điểm của m&ocirc; h&igrave;nh quan hệ</h2> <ul style="text-align: justify;"> <li>T&iacute;nh đơn giản: M&ocirc; h&igrave;nh dữ liệu quan hệ trong DBMS đơn giản hơn so với m&ocirc; h&igrave;nh mạng v&agrave; m&ocirc; h&igrave;nh ph&acirc;n cấp.</li> <li>Độc lập về cấu tr&uacute;c: Cơ sở dữ liệu quan hệ chỉ quan t&acirc;m đến dữ liệu chứ kh&ocirc;ng quan t&acirc;m đến cấu tr&uacute;c. Điều n&agrave;y c&oacute; thể cải thiện hiệu suất của m&ocirc; h&igrave;nh.</li> <li>Dễ sử dụng: M&ocirc; h&igrave;nh quan hệ trong DBMS dễ d&agrave;ng v&igrave; c&aacute;c bảng chỉ bao gồm c&aacute;c h&agrave;ng v&agrave; cột</li> <li>Khả năng truy vấn: N&oacute; gi&uacute;p ng&ocirc;n ngữ truy vấn cấp cao như SQL c&oacute; thể tr&aacute;nh việc t&igrave;m kiếm một c&aacute;ch phức tạp trong cơ sở dữ liệu.</li> <li>Độc lập dữ liệu: Cấu tr&uacute;c của cơ sở dữ liệu Quan hệ c&oacute; thể được thay đổi m&agrave; kh&ocirc;ng cần phải thay đổi những thứ kh&aacute;c.</li> <li>C&oacute; thể mở rộng: Nếu x&eacute;t về số lượng bản ghi, hoặc h&agrave;ng, c&aacute;c trường dữ liệu, cơ sở dữ liệu c&oacute; thể được mở rộng để n&acirc;ng cao khả năng vận h&agrave;nh của n&oacute;.</li> </ul> <h2 style="text-align: justify;">Nhược điểm của m&ocirc; h&igrave;nh quan hệ</h2> <ul style="text-align: justify;"> <li>Một số cơ sở dữ liệu quan hệ c&oacute; giới hạn về độ d&agrave;i kh&ocirc;ng thể vượt qu&aacute;.</li> <li>Cơ sở dữ liệu quan hệ đ&ocirc;i khi c&oacute; thể trở n&ecirc;n phức tạp khi lượng dữ liệu ng&agrave;y c&agrave;ng lớn v&agrave; mối quan hệ giữa c&aacute;c phần dữ liệu trở n&ecirc;n phức tạp hơn.</li> <li>Hệ thống cơ sở dữ liệu quan hệ phức tạp c&oacute; thể dẫn đến cơ sở dữ liệu bị c&ocirc; lập, th&ocirc;ng tin kh&ocirc;ng thể được chia sẻ từ hệ thống n&agrave;y sang hệ thống kh&aacute;c.</li> </ul> <div class="ant-row"> <div class="ant-col ant-col-24"> <div class="content--html line-numbers"> <div><hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p> </div> </div> </div> </div> <div class="ant-row ant-row-space-between ant-row-middle"> <div class="ant-col">&nbsp;</div> </div>