Đầu tiên, tôi nghĩ đó là một câu hỏi về mô hình hóa và xác định những gì bao gồm một thực thể riêng biệt. Giả sử bạn có customers
một và chỉ một đĩa đơn address
. Tất nhiên bạn có thể triển khai mọi thứ trong một bảng duy nhất customer
, nhưng nếu trong tương lai bạn cho phép anh ta có từ 2 địa chỉ trở lên, thì bạn sẽ cần phải cấu trúc lại điều đó (không thành vấn đề, nhưng hãy đưa ra quyết định có ý thức).
Tôi cũng có thể nghĩ đến một trường hợp thú vị không được đề cập trong các câu trả lời khác mà việc chia nhỏ bảng có thể hữu ích:
Hãy tưởng tượng, một lần nữa, bạn phải customers
có một đĩa đơn address
từng, nhưng lần này nó không bắt buộc phải có một địa chỉ. Tất nhiên, bạn có thể triển khai điều đó dưới dạng một loạt các NULL
cột có thể sử dụng chẳng hạn như ZIP,state,street
. Nhưng giả sử rằng bạn có một địa chỉ, trạng thái không phải là tùy chọn, nhưng ZIP thì có. Làm thế nào để lập mô hình đó trong một bảng duy nhất? Bạn có thể sử dụng một ràng buộc trên customer
bảng, nhưng việc phân chia trong một bảng khác sẽ dễ dàng hơn nhiều và làm cho khóa ngoại là NULLable. Bằng cách đó, mô hình của bạn rõ ràng hơn nhiều khi nói rằng thực thể address
là tùy chọn và rằng đó ZIP
là thuộc tính tùy chọn của thực thể đó.