发布网友 发布时间:2022-04-23 03:44
共4个回答
热心网友 时间:2022-04-11 00:08
主键和外键是在说明数据表之间的关系的时候,为了能够明确指出两个表中对应栏位的关系时需要的两个名词。也就是说,供实体关系角度来讲,具有一对多的关系,那么就存在一对主键外键。你所看到的设置好的主键和外键,一般是为了约束,理论上具有一对多关系的表应该建立约束关系,但是大部分人都是不建关系的,都是在程序中进行*。这样做有可能是为了数据维护的时候比较灵活,在做大数据量修复的时候不需要考虑到约束的*。也有可能是不想把数据库结构描述的很清楚,这样就算别人得到了数据库,也不容易分析出实体关系,增加别人模仿时的难度(呵呵,我是这样想的,也许不对啊)。
热心网友 时间:2022-04-11 01:26
SQL Server 外键约束的例子
http://hi.baidu.com/wangqing999/blog/item/969f70fa84e2873e5d600821.html
一般用于确保一定的数据的正确性,避免产生垃圾数据.
例如 有 班级表 / 学生表.
学生表上面,有个班级ID。
假如有3个班级, ID 为 1,2,3。
如果没有外键的话,你新增学生的时候, 可以新增 班级ID 为 3,4,5 ,-1,-2,-3 之类的,不存在的班级的学生。
如果有外键的话,那么,新增学生的时候,如果 班级ID, 在班级表那里没有的话,是不允许你插入数据的。
至于大型网站的SQL Server数据库有多个表,竟没有一个外键?
原因可能有下面这几个:
建立了外键的话:
当删除表/数据的时候。 必须按照, 先删除子表的数据,后删除主表的数据。
当数据库数据丢失的时候, 必须先恢复主表,后恢复子表。
这个顺序,很麻烦。
而且,对于大型网站来说, 理论上,业务逻辑写的比较严谨的,测试是比较充分的。
一般不太会发生 上面那种, 插入没有主节点的 子节点的数据。
换句话说,那些检查 父子关系的逻辑, 写在网站的服务里面了,没有写在数据库级别上面。
有没有外键, 多表查询的写法都是一样的啊
例如前面的 班级 / 学生表
无论有没有外键
班级表 和 学生表之间, 都要写 (班级.班级ID = 学生.班级ID) 这样的条件的。
热心网友 时间:2022-04-11 03:01
QL Server2000/2005,Oracle等等,一样是一个数据库系统,专门用来创建管理数据库。而MySQL是一种免费的数据库系统(当然限于一定版本)。
2.而SQL是一种结构化查询语言,基本上你列出的数据库系统都能用这个语言进行查询,更新等操作(因为它已经形成了一个标准),只是个数据库系统增加了自定义语句。
3.像你电脑上装的数据库系统作,为DW网页制作且用于ASP建议使用Microsoft SQL Server的系统(要下载百度一下),毕竟都是Microsoft的产品兼容性好,不推荐MySQL(基本上没人用在ASP中使用它);Access也可以,它适合小型的网站建设,访问量有限,速度慢,作为你的测试用还可以。
热心网友 时间:2022-04-11 04:52
外键(FK): 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
例如:成绩表中的学号不能做成绩表的主键(因为一个学生可以有多行成绩数据),但每行的学号和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 。(典型的一对多关系)
表的多少不能决定有没有外键。外键和表之间的关键有关。你好好理解下外键的定义。追问涉及多表查询时,用什么实现?用join的效率高吗?