最近参加了一个的较大型的项目,发现pdm里面没有表与表的关系,仔细研究了一下,貌似全部关系是靠代码控制的,在库级别没有建立任何关系,突然发现这样做也挺不错的。问问大大们,数据库建立关系与不建立关系各有什么优缺点啊
9条回答 默认 最新
- weixin_42677545 2013-07-12 11:47关注
首先说一点,使用外键是为什么?
外键的使用时为了在数据库的层级保证数据的一致性,完整性,更可靠。毕竟使用程序来控制的话,对于程序员的要求是比较高的。
然后再说应用场景:
追求的数据的完整性等,那就用上外键吧。毕竟不可控的因素太多了,还不如让数据库自己来保证。如果数据库都保证不了,那就game over啦。 :cry:追求性能,而且是在大数据量的频繁更新操作下。那就让外键去见鬼吧,这个时候外键还存在,不是完全的捣蛋吗?插入一条数据由于外键的存在还要去做一次一致性约束检测,这不是在浪费时间吗?所以在这种条件下,外键就有点不太实用了。
当然你的数据量不大,那么你使用外键是没有问题的(数据量不大也不需要考虑高速写入的问题了 :D )
所以说,这是一个权衡,看你用想要什么。
参考:[url]http://www.dewen.org/q/1814/mysql+%E5%A4%96%E9%94%AE%E9%97%AE%E9%A2%98[/url]
题外话:如果你要高速写入大数据量,就不要用关系型数据库了,这个解决起来有点麻烦。现在不是NOSQL很火吗,看看这个吧。呵呵
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等
- ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
- ¥15 qt6.6.3 基于百度云的语音识别 不会改
- ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
- ¥15 神经网络怎么把隐含层变量融合到损失函数中?
- ¥15 lingo18勾选global solver求解使用的算法
- ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行