5

Tworzę system reklam, który powinien być wyświetlany w bankomacie. Na razie muszę stworzyć strukturę bazy danych, w której będą przechowywane reklamy, bankomaty i zgodność z wymaganiami klientów.Przechowywanie logiki warunkowej dla zgodności w bazie danych

Reklamodawca system musi wybrać ogłoszenie w zależności od klienta i klienta .

Chodzi o to, że klient nie jest ściśle określony. Można go filtrować za pomocą dowolnej jego właściwości (numer karty, konto, identyfikator klienta, wiek klienta, ...). Na przykład:

  1. Atm = 1 ADV = 2 mają być widoczne, kiedy klient jest karta, jak '1111%' W
  2. Wszystkie ATM wyjątkiem ATM = 1 ADV = 3 powinien być wyświetlany, gdy ClientID w (1 , 2)


Jak mogę przechowywać te dane w relacyjnej bazie danych?

Mam jedno rozwiązanie, ale mi się nie podoba, zrobię tabelę SQL, gdzie zostaną zapisane przyczyny. Na przykład:

reklamowania stół
Adv_ID
Terminal_ID
stanu (wartości mogą być: Zgoda/deny)
regułę (tutaj będą zapisywane filtr SQL dla przykład: „karty jak '1111%' i CLIENT_ID! = 10230")
screen_id (na której strona należy wykazać to adv) Zlecenia (adv priorytet)

Czy macie jakieś inne propozycje?

+1

Ile z tych kolumn masz, będzie twoje warunki być podłączony tylko przez 'operatora AND', jest tam więcej niż' 'LIKE' IN' (i zarówno w połączeniu z' NOT') oraz kto będzie utrzymywał tę konfigurację? –

+0

Warunki będą połączone tylko z operatorem AND. I będzie używany IN, LIKE, NOT IN, NOT LIKE, =,! =. Konfiguracje te będą obsługiwane przez specjalistów oprogramowania ATM z interfejsu użytkownika. Ale na razie piszę tylko usługę internetową dla konfiguracji. – mariami

Odpowiedz

1

Można spróbować zaprojektować konfigurację tak:

  • kolumny
    • nazwa_kolumny
    • DATA_TYPE (NUMBER, VARCHAR)
  • ogłoszenie
    • adv
    • SEK (przypisanie priorytetu)
  • warunki
    • Adv (FK)
    • nazwa_kolumny (FK)
    • modyfikator: NOT (Check ograniczające)
    • operatora: LIKE, IN (obejmowałby = i !=, ale można je również wyraźnie dodać).
    • wartości (stolik pod dzieci)

Pozwoliłoby wygenerować wszystkie warunki unikając typos i zastrzyk SQL. Dodałem data_type, aby sprawdzić, czy dozwolone są tylko liczby i czy należy dodawać/uciekać cytaty.

adv column_name modifier operator values (shown denormalized) 
2 atm     IN  1 
2 customer    LIKE  1111% 
3 atm   NOT  IN  1 
3 clientID    IN  1,2