Today I learned: Một số pattern trong thiết kế database

Bài viết chia sẻ một số kiến thức học được qua cuốn sách: Beginning Database Design Solutions của tác giả Rod Stephens

Một số pattern thông dụng trong thiết kế database

1. Many-to-Many Associations

Được dùng để mô tả quan hệ nhiều-nhiều giữa 2 đối tượng.

Ví dụ về quan hệ nhiều-nhiều:

- Sinh viên & Khóa học: Một Sinh Viên học nhiều Khóa, một Khóa có nhiều Sinh viên

- Khách hàng & Sản phẩm: Một Khách hàng mua nhiều Sản phẩm, một Sản phẩm được mua bởi nhiều Khách hàng

- Tác giả & Sách: Một Tác giả viết nhiều Sách, một cuốn Sách được viết bởi nhiều Tác giả

- Giải đấu & Câu lạc bộ: Một Giải đấu có nhiều Câu lạc bộ, một Câu lạc bộ tham gia nhiều Giải đấu

...

Để biểu diễn quan hệ nhiều-nhiều giữa 2 đối tượng, ta sử dụng một bảng trung gian

Ví dụ, để mô tả quan hệ giữa Giải đấu và Câu lạc bộ, ta làm như sau:

- Dựng bảng mô tả Giải đấu (league) gồm các cột (chỉ là ví dụ thôi nhé :D): ID và tên. Cột ID là Primary Key và sẽ được dùng để tạo Foreign Key link đến bảng trung gian

- Dựng bảng mô tả Câu lạc bộ (club) gồm các cột: ID, tên, tên sân nhà, tên huấn luyện viên. Cột ID là Primary Key và sẽ được dùng để tạo Foreign Key link đến bảng trung gian

- Dựng bảng trung gian (club_league) gồm 2 cột: ID giải đấu và ID câu lạc bộ. 2 cột này có Foreign Key lần lượt link đến 2 cột ID của 2 bảng Giải đấu và Câu lạc bộ

Quan hệ nhiều-nhiều giữa Giải đấu - Câu lạc bộ
Quan hệ nhiều-nhiều giữa Giải đấu - Câu lạc bộ

Giả sử chúng ta muốn biết một câu lạc bộ tham dự những giải đấu nào, ta làm các bước sau:

- Truy vấn vào bảng trung gian club_league, lấy ra các league_id tương ứng với ID câu lạc bộ (club_id) mà ta muốn xem

- Với từng league_id lấy ra được ở bước 1, tiến hành truy vấn vào bảng league để lấy ra tên giải đấu

2. Multipe-Object Associations

Được dùng trong trường hợp có nhiều đối tượng cùng tham gia tương tác với nhau

Ví dụ, để làm ra một Bộ phim, cần có sự phối hợp giữa Diễn viên, Đạo diễn, Người hỗ trợ.

Để thiết kế database mô tả quan hệ giữa 4 đối tượng trên, ta thực hiện các bước sau:

- Dựng các bảng mô tả 4 đối tượng trên. Chú ý phải có cột ID cho mỗi bảng

- Tách mối quan hệ giữa 4 đối tượng thành các cặp: Bộ phim & Diễn viên, Bộ phim & Đạo diễn, Bộ phim & Người hỗ trợ.

- Phân tích quan hệ giữa 2 đối tượng trong mỗi cặp. Cụ thể:

- Quạn hệ giữa Bộ phim và Diễn viên: Một Bộ phim có nhiều Diễn viên, một Diễn viên tham gia nhiều Bộ phim. Vậy đây là quan hệ nhiều-nhiều

- Quạn hệ giữa Bộ phim và Đạo diễn: Một Bộ phim có một Đạo diễn, một Đạo diễn chỉ đạo nhiều Bộ phim. Vậy đây là quan hệ một-nhiều

- Quạn hệ giữa Bộ phim và Người hỗ trợ: Một Bộ phim có nhiều Người hỗ trợ, một Người hỗ trợ tham gia hỗ trợ cho nhiều Bộ phim. Vậy đây là quan hệ nhiều-nhiều

- Mỗi một quan hệ giữa 2 đối tượng trong từng cặp sẽ được biểu diễn ở một "nhánh" khác nhau trong sơ đồ thiết kế, cụ thể như hình dưới:

Multiple-Object Associations
Multiple-Object Associations

3. Repeated Attribute Associations

Được dùng trong trường hợp một đối tượng có nhiều thuộc tính (tương đối) giống nhau

Ví dụ, một người sở hữu 2 số điện thoại, một số dùng cho công việc, một số dùng cho việc cá nhân

Để thiết kế database cho trường hợp này, ta sẽ:

- Tách 2 đối tượng Người và Số điện thoại ra làm 2 bảng: Person và Phone. Chú ý bảng Person cần có cột ID

- Bảng Phone cần có cột person_id để link đến cột ID của bảng Person

Repeated Attribute Associations
Một người có nhiều số điện thoại
Postgresql: Tìm kiếm với LIKE và ILIKE Postgresql: Tìm kiếm với LIKE và ILIKE Nguyễn Hàn Duy Blog Home Xu Hướng BlockChain năm 2018 Xu Hướng BlockChain năm 2018 Techmaster team
Nguyễn Hàn Duy

Lập trình viên - trợ giảng khoá học Lập trình Golang