@bosnic:
Bạn có một khách hàng bảng mà có một 1: mối quan hệ 1 với bảng SALES_OFFICE vì, ví dụ, logic của hệ thống của bạn nói như vậy.
Logic ứng dụng của bạn nói gì và mô hình dữ liệu của bạn nói gì là 2 điều khác nhau. Không có gì sai khi thực thi mối quan hệ đó với mã logic nghiệp vụ của bạn, nhưng nó không có chỗ trong mô hình dữ liệu.
Bạn có thực sự kết hợp dữ liệu của SALES_OFFICE vào bảng CLIENT không?
Nếu mọi CLIENT đều có SALES_OFFICE duy nhất, và mỗi SALES_OFFICE có một số CLIENT duy nhất - thì có, chúng phải ở cùng một bảng. Chúng tôi chỉ cần một cái tên tốt hơn.;)
Và nếu một bảng khác cần liên kết chúng với self SALES_OFFICE?
Không có lý do gì để. Liên kết các bảng khác của bạn với CLIENT, vì CLIENT có SALES_OFFICE duy nhất.
Và điều gì về các mẫu và phương pháp hay nhất về chuẩn hóa cơ sở dữ liệu?
Điều này là bình thường hóa.
Để công bằng, SALES_OFFICE và CLIENT rõ ràng không phải là mối quan hệ 1: 1 - đó là 1: N. Hy vọng rằng, SALES_OFFICE của bạn tồn tại để phục vụ hơn 1 khách hàng và sẽ tiếp tục tồn tại (trong một thời gian, ít nhất) mà không cần bất kỳ khách hàng nào.
Ví dụ thực tế hơn là SALES_OFFICE và ZIP_CODE. SALES_OFFICE phải có chính xác 1 ZIP_CODE và 2 SALES_OFFICE - ngay cả khi chúng có ZIP_CODE tương đương - không chia sẻ ví dụ của ZIP_CODE (do đó, việc thay đổi ZIP_CODE của 1 không ảnh hưởng đến nhau). Bạn sẽ không đồng ý rằng ZIP_CODE thuộc về một cột trong SALES_OFFICE?
Nguồn
2008-08-28 16:45:19
..hoặc cần thiết để vượt quá giới hạn độ dài hàng của SQL. Microsoft Dynamics CRM thực hiện điều này để phân tách các cột được tạo sẵn từ các cột do người dùng thêm. – BlackWasp
Hoặc nếu có một lý do chức năng để phân chia nó như các trường chỉ được tham chiếu trong một vài trường hợp mà bảng chính được tham chiếu thường xuyên. – HLGEM
hoặc cho liên kết đa hình – WorldSEnder