SQL Server数据库外键一般在什么地方用?为什么大型网站的SQL Server数据库有多个表,竟没有一个外键
展开全部
SQL Server 外键约束的例子
http://hi.baidu.com/wangzhiqing999/blog/item/969f70fa84e2873e5d600821.html
一般用于确保一定的数据的正确性,避免产生垃圾数据.
例如 有 班级表 / 学生表.
学生表上面,有个班级ID。
假如有3个班级, ID 为 1,2,3。
如果没有外键的话,你新增学生的时候, 可以新增 班级ID 为 3,4,5 ,-1,-2,-3 之类的,不存在的班级的学生。
如果有外键的话,那么,新增学生的时候,如果 班级ID, 在班级表那里没有的话,是不允许你插入数据的。
至于大型网站的SQL Server数据库有多个表,竟没有一个外键?
原因可能有下面这几个:
建立了外键的话:
当删除表/数据的时候。 必须按照, 先删除子表的数据,后删除主表的数据。
当数据库数据丢失的时候, 必须先恢复主表,后恢复子表。
这个顺序,很麻烦。
而且,对于大型网站来说, 理论上,业务逻辑写的比较严谨的,测试是比较充分的。
一般不太会发生 上面那种, 插入没有主节点的 子节点的数据。
换句话说,那些检查 父子关系的逻辑, 写在网站的服务里面了,没有写在数据库级别上面。
有没有外键, 多表查询的写法都是一样的啊
例如前面的 班级 / 学生表
无论有没有外键
班级表 和 学生表之间, 都要写 (班级.班级ID = 学生.班级ID) 这样的条件的。
http://hi.baidu.com/wangzhiqing999/blog/item/969f70fa84e2873e5d600821.html
一般用于确保一定的数据的正确性,避免产生垃圾数据.
例如 有 班级表 / 学生表.
学生表上面,有个班级ID。
假如有3个班级, ID 为 1,2,3。
如果没有外键的话,你新增学生的时候, 可以新增 班级ID 为 3,4,5 ,-1,-2,-3 之类的,不存在的班级的学生。
如果有外键的话,那么,新增学生的时候,如果 班级ID, 在班级表那里没有的话,是不允许你插入数据的。
至于大型网站的SQL Server数据库有多个表,竟没有一个外键?
原因可能有下面这几个:
建立了外键的话:
当删除表/数据的时候。 必须按照, 先删除子表的数据,后删除主表的数据。
当数据库数据丢失的时候, 必须先恢复主表,后恢复子表。
这个顺序,很麻烦。
而且,对于大型网站来说, 理论上,业务逻辑写的比较严谨的,测试是比较充分的。
一般不太会发生 上面那种, 插入没有主节点的 子节点的数据。
换句话说,那些检查 父子关系的逻辑, 写在网站的服务里面了,没有写在数据库级别上面。
有没有外键, 多表查询的写法都是一样的啊
例如前面的 班级 / 学生表
无论有没有外键
班级表 和 学生表之间, 都要写 (班级.班级ID = 学生.班级ID) 这样的条件的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询