PK và FK

Relationships có thể được xem là important như chính data itself

⭕Entity Identifier (PK)

  • Mỗi Entity PHẢI có một Identifier để định danh cho chính nó và cho phép kết nối relationships.
  • Identifier là Primary key của Table tương ứng trong DB

Đặc điểm của Identifier

  • Id là kiểu long integer và tự động tăng (Auto number)
  • IdBẮT BUỘC (Mandatory)
  • Có thể name của Id thành một name
  • Các Type có thể làm Id:
    • Text
    • Integer / Long Integer
    • Entity Identifier (Đang nói tới FK)

Lưu ý rằng:

  • OutSystems chỉ hỗ trợ Simple Primary Key
  • KHÔNG HỖ TRỢ khoá tổ hợp

🛑Referencing Data (FK)

Mô tả quan hệ 1-to-Many giữa A và B

Trong trường hợp 1(A)-to-Many(B)

Entities A có thể referenced với Entities B thông qua Entity identifier của B. Lúc này Entities A sẽ có khoá ngoại FK chính là PK của Entities B

  • Tạo một atribute A trong Entities A cái mà muốn đặt là FK, nó BẮT BUỘC có kiểu là Entity Identifier của Entities B
  • Thuộc tính mandatory của atribute Acó thể là: YES/NO
  • Static Entities chỉ có thể reference với các Static Entities khác

Giá trị mặc định

NullIdentifier() là giá trị mặc định cho reference attributes


Tất cả Relationships

1️⃣ to 1️⃣

Mô tả quan hệ 1 to 1

Có 2 đối tượng: Receipt (Biên nhân) và Order (Đơn hàng)

  • Mỗi Receipt thuộc về một Order
  • Mỗi Order có nhiều nhất một Receipt

Lúc này chúng ta gọi đây là quan hệ 1-to-1

  • Tạo ra Entity OrderReceipt Là một extension (Phần mở rộng) của Order

  • OrderReceipt có một referenceId có kiểu là Order Indentity vừa là PK vừa là PK

Lưu ý:

  • Order Identifier phải setting MandatoryYES
  • Có thể gộp thành 1 Entity duy nhất, nhưng có một số trường hợp phải tách ra.

1️⃣ to Many

Mô tả quan hệ 1 to many

  • Một Order được yêu cầu bởi một Customer
  • Một Customer có thể đặt nhiều Orders

Lúc này chúng ta gọi đây là quan hệ 1-to-Many, trong đó 1 là Customer, Many là Orders

Cách triển khai trong OutSystem

  • Order Entity có một reference đến thuộc tính có kiểu Customer Identifier (RequestedBy)
  • mandatory của Reference attribute có thể YES hoặc NO.
  • If mandatory là NO, một vài Orders sẽ không có Customer (RequestedBy)

Many to Many

Mô tả quan hệ Many to Many

  • Mỗi Product có thể nằm trong nhiều Orders
  • Mỗi Order có thể có nhiều Products

Lúc này chúng ta gọi đây là quan hệ Many-to-Many
Nên BẮT BUỘC phải tạo ra OrderProduct (gọi là Junction Entity) làm trung gian để lưu trữ thông tin Đặt hàng

Cách triển khai trong OutSystem

  • Cần Reference OrderId trong OrderProductTypeOrder Identifier
  • Cần Reference ProductId trong OrderProductTypeProduct Identifier

Master/Detail Entities (Cách gọi tên)

  • Detail Entity references Master Entity
  • Hay có thể nói Detail Entity có một reference đến attribute có type là MasterEntity Identifier
  • Một Entity có khả năng có nhiều reference attributes

Customers là nhiều => Master Entity
Orders là một => Detail Entity


TIPS Tránh trùng lặp

● Định nghĩa ReferenceUnique
● Kết hợp một hoặc nhiều Reference

Extension Entity (1 to 1)

  • Entity A Chia sẻ EntityA identifier của nó trên cơ sở chính nó phải là Entity.
  • Entity Batribute reference đến EntityA identifier, và sử dụng chính atribute reference đó làm khoá chính (PK)

Hai Entities có thể được hợp nhất
Thường tách ra vì lý do:

  • Các vấn đề Performance
  • Base Entity là read only (Static Entity)

Junction Entity (Many-to-Many)

PHẢI có ít nhất các attributes: 1 identifier (PK) và FK cho mỗi Master Entity (parent entity)

  • Unique Index với cả hai reference attributes có thể hữu ích

! Referential Integrity (Delete rule)

  • Là tính toàn vẹn của tham chiếu
  • Delete Rule là thuộc tính của reference attribute
  • Khi delete record trong Master Entity, thì record trong Detail Entity thay đổi như thế nào?

LƯU Ý: Static Entity không có Delete rule

Ví dụ : Entity (Customer)

  • Protect :: không cho phép delete record
    Khi delete Customer: Customer có ít nhất 1 Orders reference đến nó thì KHÔNG ĐƯỢC PHÉP deleted
  • Delete :: deletes record và cascades delete all records mà reference đến nó đều bị delete
    Khi delete Customer: Customer và all Orders reference customer đều bị deleted
  • Ignore :: Không đảm báo tính toàn vẹn của tham chiếu
    Khi delete Customer: Customer bị deleted. Orders are kept

! Indexes

Tăng tốc độ truy xuất data trên một số attributeschỉ định

  • Id đã được tự động đánh index
  • Tốc độ write GIẢM, do phải làm thêm 1 công việc là đánh index
  • Các attribute được đánh index, để TĂNG tốc độ truy xuất

Ngoài ra:
Muốn Unique cho trường hợp thì BẮT BUỘC CHỈ CÓ MỘT CÁCH Đánh Indexs


Entity Diagrams

image.png
Entity Diagram thể hiện được:

  • Entities
  • Relationships
  • Delete Rules :: Protect[Black], Delete[Delete], Ignore[Opacity]

HẾT.

@Copyright 2022 by HieuEM Github