小编Sha*_*nce的帖子

外键是否可以使用常量而不是字段名称?将FK与STI子类相关联

建立

因此,一旦您决定使用STI(单表继承),我发现这种情况相当普遍.

你有一些基本类型与各种子类型.

  • 人<(教师,学生,工作人员等)
  • 用户<(会员,管理员)
  • 会员<(买方,卖方)
  • 车辆<(汽车,船,飞机)
  • 等等

在数据库中建模有两种主要方法:

  • 单表继承
    • 一个带有类型字段和一堆可空字段的大表
  • 类表继承
    • 每种类型一个表,共享PK(从孩子到父母的FK)

虽然STI存在一些问题,但我确实喜欢它如何设法减少你必须加入的连接数,以及像Rails这样的框架中的一些支持,但是我遇到了一个关于如何关联的问题子类特定的表.

例如:

  • 认证应仅参考教师人员
  • 配置文件应仅引用成员用户
  • WingInformation应该与汽车或船只无关(除非你是蝙蝠侠)
  • 广告由卖方 - 会员而非买方 - 会员拥有

使用CTI,这些关系是微不足道的 - 只需在相关表上打一个外键即可完成:

ALTER TABLE advertisements
 ADD FOREIGN KEY (seller_id) REFERENCES sellers (id)
Run Code Online (Sandbox Code Playgroud)

但是对于STI,类似的事情不会捕获子类型限制.

ALTER TABLE advertisements
  ADD FOREIGN KEY (seller_id) REFERENCES members (id)
Run Code Online (Sandbox Code Playgroud)

我希望看到的是:

* Does not work in most (all?) databases *
ALTER TABLE advertisements
  ADD FOREIGN KEY (seller_id, 'seller') REFERENCES members (id, type)
Run Code Online (Sandbox Code Playgroud)

我能找到的只是一个脏的黑客,需要在相关的表中添加一个计算列:

ALTER TABLE advertisements
  ADD seller_type VARCHAR(20) NOT NULL …
Run Code Online (Sandbox Code Playgroud)

sql database-design foreign-keys sti

7
推荐指数
1
解决办法
1994
查看次数

Paypal IPN错误,地址中嵌入了换行符

所以,这对我来说是一个新的.我的Paypal IPN已经工作了一段时间,并且今天开始出现错误.

在回发期间使用PayPal进行验证(添加cmd = _notify-validate),PayPal响应者说"不,这不是来自我".这个特定条目唯一奇怪的是(我相信)用户指定地址的方式:

123地址街
#789

其他一切似乎都很正常,IPN处理程序正在非常愉快地处理其他通知.

有人见过这样的事吗?

php paypal-ipn

5
推荐指数
1
解决办法
486
查看次数

标签 统计

database-design ×1

foreign-keys ×1

paypal-ipn ×1

php ×1

sql ×1

sti ×1