Để tốt hơn hoặc tệ hơn, chúng tôi có một giải pháp dựa trên nhiều cơ sở dữ liệu mà tất cả đều tham chiếu cơ sở dữ liệu quản trị chung. Cơ sở dữ liệu đóng vai trò như một phần của mô-đun, và không phải tất cả các mô-đun đều được yêu cầu để cài đặt (có thể là lý do tại sao chúng tôi có nhiều cơ sở dữ liệu ở vị trí đầu tiên). Cơ sở dữ liệu quản trị là bắt buộc, tuy nhiên ... vì vậy nó sẽ luôn luôn ở đó.Thiết kế SQL xung quanh thiếu tham chiếu khóa ngoài cơ sở dữ liệu chéo
Tôi muốn mang lại một số tính toàn vẹn tham chiếu và thứ tự đến sự hỗn loạn, nhưng tôi bị cản trở bởi sự không có khả năng của máy chủ SQL để thực hiện các khóa ngoại chéo cơ sở dữ liệu. Không có nhiều sự khuấy động trong cơ sở dữ liệu, nhưng thông tin sẽ được chèn vào/cập nhật bởi (ahem) người dùng phi kỹ thuật.
sự lựa chọn của tôi khi tôi nhìn thấy chúng là:
a) Phạt chìa khóa giả nước ngoài sử dụng trigger (ok, nhưng một chút công việc)
b) Sử dụng gây nên sao chép từ quản trị cơ sở dữ liệu khác (một công thức rõ ràng đối với thảm họa)
c) Phạt khóa ngoại psuedo trong mã/Dal (không chơi tốt với ORM)
d) Đừng lo lắng về điều đó ở cấp DB, sử dụng thiết kế giao diện người dùng tốt để đảm bảo không ai làm bất cứ điều gì ngu ngốc và hạn chế truy cập/giữ hơi thở o n truy cập SQL trực tiếp.
Thẳng thắn mà nói, tôi nghiêng để đi với "D", nhưng figured tôi muốn đi ra ngoài lấy ý kiến thông minh hơn tôi ...
Chúng tôi đã nghĩ về điều này, và nó giúp phần nào. Vấn đề vẫn còn, tuy nhiên, bạn không thể treo một khóa ngoài khỏi một khung nhìn trong máy chủ SQL. Mặc dù vậy, suy nghĩ tốt. – brmore
Sử dụng chế độ xem theo cách này sẽ cung cấp cho bạn thứ gì đó để chọn trong một khóa nước ngoài được kích hoạt bằng trình kích hoạt, giúp dễ dàng hơn. –