Tôi có một bảng ASSETS
rằng có một cấu trúc như nó được hiển thị dưới đây:Chỉ định khoá ngoại trên một cột và giá trị của cột khác
----------------------------------------------------
ID (PK) | DESCRIPTION | TYPE | Do- | Do+ | Dx- | Dx+
----------------------------------------------------
TYPE
cột có một nước ngoài chủ chốt, giá trị có thể là SECURITY
hoặc CURRENCY
(tức FX), tôi cũng có thêm hai bảng: CURRENCIES
(ví dụ, EUR
, RUB
hoặc USD
):
--------------------------------------------------------
ID (PK)| FROM (FK ASSETS.ID) | TO (FK ASSETS.ID) | VALUE
--------------------------------------------------------
và SECURITIES
(ví dụ, MTS
, GAZP
hoặc VTB
):
----------------------------------------------------------
ID (PK)(FK ASSETS.ID)| CURRENCY (PK)(FK ASSETS.ID) | VALUE
----------------------------------------------------------
Làm thế nào tôi có thể làm cho một hạn chế, đó không chỉ đóng vai trò như chìa khóa nước ngoài tại CURRENCIES.FROM
, CURRENCIES.TO
và SECURITIES.CURRENCY
, nhưng cũng kiểm tra xem có giới thiệu ASSETS.TYPE
là CURRENCY
và trong SECURITIES
cũng kiểm tra xem có giới thiệu ASSETS.TYPE
cho SECURITIES.ID
là SECURITY
không?
Tôi đoán tôi có thể viết trình kích hoạt để kiểm tra giá trị ASSETS.TYPE
, nhưng tôi đang tìm kiếm giải pháp khác ngay bây giờ (nếu có thể, tất nhiên là).
Nếu có cách tốt hơn để thực hiện những điều mong muốn (như thiết kế cơ sở dữ liệu tốt hơn), vui lòng chia sẻ ý tưởng của bạn.
P.S. Tôi đoán nó là một vấn đề khá phổ biến, vì vậy nếu có các bài viết về nó hoặc các câu hỏi tương tự được hỏi trên mạng này hoặc một số giải pháp tổng hợp, hãy chia sẻ.
Xem câu trả lời của tôi [ở đây] (https: // stackoverflow.com/a/26093733/3404097). (Câu hỏi cụ thể một cách bối rối một phần không có bảng Sinh viên (ASSESTS_DATA) của bạn trong văn bản gốc của nó nhưng có một trong sơ đồ Chỉnh sửa của nó.) Thiết kế đầu tiên của bạn giống như tôi đề xuất (liên quan đơn giản) (bộ đầu tiên) và của bạn được sửa đổi/KIỂM TRA như tôi đề nghị (tập thứ hai của đạn) – philipxy
@philipxy: như tôi đã gắn thẻ câu hỏi của tôi, FireBird. – potashin
Nhìn thoáng qua, có vẻ lạ khi tôi đối xử với Chứng khoán và Tiền tệ chỉ bằng hai loại tài sản. Một (Security) là một thứ có giá trị - có thể là một tòa nhà, một chứng chỉ nợ hay bất cứ thứ gì - trong khi cái kia (tiền tệ) chỉ là một đơn vị đo lường. Tôi muốn vài chứng khoán và * Tiền *, với Tiền là tiền mặt trong các loại tiền tệ khác nhau, tiền trong các tài khoản ngân hàng khác nhau, v.v. –