Branch Testing
===
# Flowchart
link: https://mermaid-js.github.io/
graph TD
A[Vào sản phẩm A] -->|internal hay không|B{Có?}
B --> |Tồn tại|C1[Có user_id trong USER]
B --> |Tồn tại|C2[Ko Có user_id trong USER]
B --> |Ko Tồn tại|B1[Có user_id trong customer]
B --> |Ko Tồn tại|B2[Ko Có user_id trong customer]
C1 --> D1[Hiện thôi]
C2 --> D2[Dùng đỡ user_id trong customer]
D2 --> D3[Không có thì ko hiện thôi]
B1 --> E1[Hiện thôi]
# Example
### Đặc tả 1
Sản phẩm => customer / user -- internal / external
user => customer => ko hiện
### Đặc tả 2
nếu như internal đã phụ thuộc vào user => ko có user => ko hiện
nếu như external đã phụ thuộc vào customer => ko có custoemr => ko hiện
### Đặt vấn đề
Case nào customer - internal ?
Case 1: customer trùng với user_id => xài 1 client customer để tạo sản phẩm => Chỗ này đã biết trùng rồi mà lại lưu internal ?
Case 2: user bị xóa => khách hàng sử dụng sản phẩm từ trước rồi => sinh ra case user_id null và sản phẩm lại có customer từ trước
=> vì sao lại xóa user mà remove lun cái field đó ở sản phẩm ? => handle user bị xóa
### Review
if else
for
while
đặc tên biến ngu
khai báo ngu
&& || Logic