都说互联网开发尽量不用外键,那么这里的不用外键到底代表的啥意思呢?
1.这里有一层意思很明确:
不用外键约束。比如删除一张表中的数据时,如果要级联删除另一张表中关联的数据,以往是由数据库来级联约束的,现在应该将其移到程序中由程序来保持数据的一致性。
2.另外一层意思:
外键的定义就是在一个表中的字段是另外一张表中的主键。如果仅按照"不使用外键"这几个字的字面理解,就是要把外键字段抽取出来放在一张中间表中。简单说就是都当成多对多来处理。
比如
用户(userid,username) 订单(orderid,totalPrice,userid)
问题1:这里useid就是一个外键,如果不用外键,是否就要设计成这样?
用户(userid,username) 订单(orderid,totalPrice)用户-订单中间表(userid,orderid)
问题2:如果是这样,假如一张表有多个外键,岂不是要有很多中间表?
翻遍了百度都是说不要用外键,而不是说不用外键约束,所以让我很疑惑,希望各位大大解惑。谢谢了!