2012-04-30 36 views
5

Tôi hiện đang làm việc với một dự án. Bây giờ vấn đề phát sinh là, tôi phải xử lý các cột động trong bảng cơ sở dữ liệu.vấn đề thiết kế cơ sở dữ liệu khi thêm cột mới vào bảng từ ứng dụng

Tôi có một bảng Charges, trong đó số tiền phí khác nhau tương ứng với mỗi Client sẽ được lưu trữ. Giả sử bảng này có các cột sau-

Client_Id  Charge_1  Charge_2  Charge_3  Charge_4 

Bây giờ, quản trị viên có thể áp dụng thêm new Charges cho khách hàng. Trong trường hợp đó, các khoản phí mới sẽ được thêm vào bảng Chargescolumn. Và điều này cần phải được xử lý trong thời gian chạy ứng dụng không phải trong thời gian thiết kế cơ sở dữ liệu. Đây là suy nghĩ của tôi.

Nhưng, nó không phù hợp với tôi.

Có ý tưởng nào tốt hơn để xử lý vấn đề này không ?? Hãy đề nghị tôi.

Xin cảm ơn trước. và tôi mới với thiết kế cơ sở dữ liệu này.

Trả lời

7

Thực hiện một bảng tổng hợp, tức là ClientCharges

Bạn có thể giữ Phí Bảng ban đầu của bạn và bảng khách hàng của bạn và trong bảng cước khách hàng đã các cột sau:

ClientChargeId, ClientId, ChargeId

Trong bảng Phí của bạn, bạn có thể tiếp tục thêm (như nhiều khoản phí mà bạn yêu cầu) và sau đó tham chiếu đến ChargeId trong bảng ClientCharges.

CREATE TABLE ClientCharges 
(
    ClientChargeId   INT IDENTITY(1,1) 
    , ClientId    INT 
    , ChargeId    INT 
) 


INSERT INTO ClientCharges 
(ClientId, ChargeId) 
VALUES 
(1, 1), 
(1,2), 
(1,3), 
(1,4), 
(2,1), 
(3,1), 
(3,2), 
(4,3), 
(4,4) 
  • khách hàng 1 có phí 1, 2, 3 và 4
  • Khách hàng 2 có phí 1
  • Khách hàng 3 có phí 1 và 2
  • Khách hàng 4 có chi phí 3 và 4

Sau đó, thêm ràng buộc khóa ngoài vào trường ClientId và ChargeId.

+0

tuyệt vời..Tôi đang làm việc trên đó. –

5

Có vẻ như những gì bạn thực sự muốn là mối quan hệ 1 đến nhiều bảng.

Việc bạn làm là tạo một bảng có hai cột, Client_id và phí, sau đó bạn thêm một hàng mới cho mỗi khoản phí.

Nó không rõ ràng với tôi như thế nào bạn định sử dụng này. Các giao dịch cá nhân "phí" này có phải là giao dịch không? Hay họ tính phí các loại liên kết với khách hàng? Trong mọi trường hợp, đó là hình thức xấu để sửa đổi mô hình dữ liệu của bạn như thế này.

Khi bạn có các loại trường định kỳ này, chỉ cần biến chúng thành bảng của riêng chúng.

Các vấn đề liên quan