我正在创建广告系统,该系统应显示在ATM上。现在,我必须建立一个数据库结构,用于存储广告,ATM和客户合规性。



关键是没有严格定义客户。可以使用其任何属性(卡号,帐户,客户ID,客户年龄等)进行过滤。
例如:

  • 在ATM = 1上如果客户是“1111%”这样的卡,则应显示ADV = 2在
  • (1,2)
  • 中的ClientID时,应显示除ATM = 1 ADV = 3以外的所有ATM

    如何将这些数据存储在关系数据库中?

    我有一个解决方案,但我不喜欢它,我将创建一个SQL表,以保存原因。
    例如:



    你有什么其他的建议?

    最佳答案

    您可以尝试设计您的配置,如下所示:


  • column_name
  • data_type(NUMBERVARCHAR)
  • 广告
  • adv
  • seq(分配优先级)
  • 条件
  • adv(FK)
  • column_name(FK)
  • 修饰符:NOT(检查约束)
  • 运算符:LIKEIN(将覆盖=!=,但您也可以明确地添加它们)
  • 值(子表)

  • 这将允许生成所有条件,同时避免输入错误和SQL注入(inject)。我添加了data_type来检查何时仅允许数字以及何时需要添加/转义引号。
    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
    

    关于database - 在数据库中存储用于合规的条件逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23215846/

    10-10 06:39