2012-04-30 10 views
5

Aktualnie pracuję nad projektem. Teraz pojawia się problem, muszę obsługiwać dynamiczne kolumny w tabeli bazy danych.Problem z projektowaniem bazy danych podczas dodawania nowych kolumn do tabeli z aplikacji

Mam tabelę Charges, w której będzie przechowywana ilość różnych opłat odpowiadających każdemu Client. Załóżmy, że tabela ta ma następujące columns-

Client_Id  Charge_1  Charge_2  Charge_3  Charge_4 

Teraz administrator może stosować bardziej new Charges dla klientów. W takim przypadku nowe opłaty zostaną dodane do tabeli Charges jako column. I trzeba to zrobić w czasie wykonywania aplikacji, a nie w czasie projektowania bazy danych. To jest moja myśl.

Ale nie jest to dla mnie odpowiednie.

Czy istnieje lepszy pomysł na rozwiązanie tego problemu? Proszę, zasugeruj mi.

Z góry dziękuję. i jestem nowy w tym projekcie bazy danych.

Odpowiedz

7

Zrób Composite stół, tj ClientCharges

Można zachować swój pierwotny opłat Stół i stolik klienta iw tabeli Opłaty klienckie mają następujące kolumny:

ClientChargeId, ClientID, ChargeId

W tabeli opłat możesz nadal dodawać (tyle ile potrzebujesz), a następnie odwołać się do ChargeId w tabeli 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) 
  • klienta 1 ma opłaty 1, 2, 3 i 4
  • klienta 2 ma ładowania 1
  • Klient 3 ma wysokość 1 i 2
  • Klient 4 ma opłat 3 i 4

Następnie dodaj ograniczenia klucza obcego w polach ClientId i ChargeId.

+0

świetnie .. Pracuję nad tym. –

5

Wygląda na to, że to, czego naprawdę chcesz, to relacja od 1 do wielu.

Co należy zrobić, to utworzyć tabelę z dwiema kolumnami: Client_id i charge, a następnie dodać nowy wiersz dla każdego ładunku.

Nie jest dla mnie jasne, w jaki sposób zamierzasz z niego korzystać. Czy te "opłaty" to pojedyncze transakcje? Czy też są to typy opłat powiązane z klientem? W każdym razie, źle jest zmodyfikować model danych w ten sposób.

Gdy masz takie powtarzające się pola, po prostu ustaw je jako własne.

Powiązane problemy