Aggregation vs Composition relationship

Qua bài này sẽ minh họa sự khác nhau giữa 2 loại quan hệ trong thiết kế hướng đối tượng và minh họa rõ sự khác biệt khi cài đặt trong code

Aggregation

Aggregation là mối quan hệ mà ở đó thực thể có thể tồn tại độc lập với các lớp khác. Ví dụ: một người nào đó có thể thuộc một công ty hoặc không thuộc một công ty, người đó vẫn có thể tồn tại độc lập, có nghĩa là họ không làm cho một công ty bất kỳ.

Composition

Composition đề cập đến trường hợp khi một đối tượng (obj1) tồn tại phụ thuộc vào sự tồn tại của một đối tượng khác(obj2). Có nghĩa rằng, nếu đối tượng được phụ thuộc obj2 tồn tại thì đối tượng obj1 mới có thể tồn tại.

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Aggregation

public class Subject {
   private String name;
   public void setName(String name)
   {
     this.name = name;
   }
   public String getName()
   {
     return name;
   }
 }
 
 public class Student {
   private Subject[] studyAreas = new Subject[10];
   //the rest of the Student class
 } 

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Composition

public class Job {
    private String role;
    private long salary;
    private int id;
        
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
public class Person {
    //composition has-a relationship
    private Job job; 
    public Person(){
        this.job=new Job();
        job.setSalary(1000L);
    }
    public long getSalary() {
        return job.getSalary();
    }
}

Source: internet

Advertisements

CLR-Stored Procedures

CLR stored procedures là gì?

CLR stored procedures là stored procedure được tạo bởi managed code (C#, VB.NET, …)

Khi nào sử dụng CLR stored procedures?

Khi stored procedure không viết được với T-SQL

Cách tạo clr stored procedures?

Các bước dưới đây hướng dẫn cách xây dựng CLR – Stored Procedured

1. Tạo Database project trong C# và viết mã như sau

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SqlStoredProcedure1 ()
{
SqlPipe pipe = SqlContext.Pipe;
pipe.Send(“Hello world”);
}
}

2. Viết mã trong SQL Server

clrSP

Dạng chuẩn 1 – 1st Normal Form

Định nghĩa:

Một cơ sở dữ liệu thỏa mãn dạng chuẩn 1 nếu và chỉ nếu:

  • Các cột có giá trị nguyên tố (atomic values)
  • Không có nhóm cột lặp

Giá trị nguyên tố là giá trị của trường đó không thể chia nhỏ ra được nữa, nếu chia nhỏ ra thì giá trị đó không có nghĩa. Ví dụ trong bảng dưới đây, giá trị trong cột color có thể thể chia ra nhỏ hơn, hàng đầu tiên giá trị có thể chia thành red và green. Như vậy bảng Product không thỏa mãn dạng chuẩn 1

Nhóm các cột lặp là bảng có chứa 2 hoặc nhiều cột giống nhau (thông tin liên quan nhau). Ví dụ bảng Books có [Book ID], [Author 1], [Author 2], [Author 3] cũng không thỏa dạng chuẩn 1 vì [Author 1], [Author 2], và [Author 3] là các cột có giá trị giống nhau.

Ví dụ: 1st Normal Form

Làm thế nào để chuẩn hóa bảng dữ liệu Product về dạng chuẩn 1

Unnormalized Table Example

Để bảng PRODUCT chuyển về dạng chuẩn 1, chúng ta tách thành 2 bảng và dữ liệu kết quả như sau:

 

1st Normal Form Example

Bây giờ các bảng đã thỏa mãn dạng chuẩn một: không có nhóm cột lặp, giá trị nguyên tố.

Note: Ngoài ra, một số tài liệu còn định nghĩa, trong dạng chuẩn 1 bảng đó không chứa trường tính toán. Ví dụ: Bảng thành tiền được tính = số lượng x đơn giá. Vậy cột thành tiền không cần xuất hiện trong bảng.

Conceptual data model

Một mô hình dữ liệu khái niệm chỉ ra các thực thể và các mối quan hệ giữa các thực thể khác nhau. Đặc điểm của mô hình dữ liệu khái niệm bao gồm:

  • Bao gồm những thực thể quan trọng và mối quan hệ giữa chúng
  • Chưa mô tả hoặc mô tả chưa đầy đủ các thuộc tính
  • Chưa chỉ ra khóa chính

Logical data model – Mô hình dữ liệu khái niệm

 

conceptual-data-model

Logical data model

Một mô hình dữ liệu mức logic mô tả dữ liệu ở mức chi tiết hơn, nhưng chưa quan tâm đến cài đặt cơ sở dữ liệu vật lý. Đặc điểm của mô hình dữ liệu logic bao gồm:

  • Chỉ ra tất cả các thực thể và các mối quan hệ giữa chúng
  • Chỉ ra tất cả các thuộc tính cho mỗi thực thể
  • Chỉ ra các trường khóa (Primary keys, foreign keys)
  • Chỉ mục – Index
  • Áp dụng chuẩn hóa cơ sở dữ liệu (Normalization)
  • Mối quan hệ nhiều nhiều cũng được tách/tạo bảng trung gian (conjunction table)

logical-data-model