SQL Server数据库外键一般在什么地方用?为什么大型网站的SQL Server数据库有多个表,竟没有一个外键?

作者&投稿:甫善 (若有异议请与网页底部的电邮联系)
数据库中(本人用sql server)表的内链接和外链接各是在什么情况下用哪一个?遇到一个题目该如何选择?~

inner join 用得最多,多个表联合查询
left outer join 少用,以左边表为主查询
right outer join 少用,以右边表为主查询

你百度一下:内连接,左外连接,右外连接。

主键:唯一标识一条记录,不能有重复的,不允许为空;外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
主键的作用是用来保证数据完整性,主键只能有一个。比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键的作用是用来和其他表建立联系用的,一个表可以有多个外键。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

主键和外键是在说明数据表之间的关系的时候,为了能够明确指出两个表中对应栏位的关系时需要的两个名词。也就是说,供实体关系角度来讲,具有一对多的关系,那么就存在一对主键外键。你所看到的设置好的主键和外键,一般是为了约束,理论上具有一对多关系的表应该建立约束关系,但是大部分人都是不建关系的,都是在程序中进行限制。这样做有可能是为了数据维护的时候比较灵活,在做大数据量修复的时候不需要考虑到约束的限制。也有可能是不想把数据库结构描述的很清楚,这样就算别人得到了数据库,也不容易分析出实体关系,增加别人模仿时的难度(呵呵,我是这样想的,也许不对啊)。

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) 这样的条件的。

QL Server2000/2005,Oracle等等,一样是一个数据库系统,专门用来创建管理数据库。而MySQL是一种免费的数据库系统(当然限于一定版本)。
2.而SQL是一种结构化查询语言,基本上你列出的数据库系统都能用这个语言进行查询,更新等操作(因为它已经形成了一个标准),只是个数据库系统增加了自定义语句。
3.像你电脑上装的数据库系统作,为DW网页制作且用于ASP建议使用Microsoft SQL Server的系统(要下载百度一下),毕竟都是Microsoft的产品兼容性好,不推荐MySQL(基本上没人用在ASP中使用它);Access也可以,它适合小型的网站建设,访问量有限,速度慢,作为你的测试用还可以。

外键(FK): 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
例如:成绩表中的学号不能做成绩表的主键(因为一个学生可以有多行成绩数据),但每行的学号和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 。(典型的一对多关系)

表的多少不能决定有没有外键。外键和表之间的关键有关。你好好理解下外键的定义。


宽甸满族自治县13015562660: SQL Server数据库外键一般在什么地方用?为什么大型网站的SQL Server数据库有多个表,竟没有一个外键? -
职知福德: 主键和外键是在说明数据表之间的关系的时候,为了能够明确指出两个表中对应栏位的关系时需要的两个名词.也就是说,供实体关系角度来讲,具有一对多的关系,那么就存在一对主键外键.你所看到的设置好的主键和外键,一般是为了约束,理论上具有一对多关系的表应该建立约束关系,但是大部分人都是不建关系的,都是在程序中进行限制.这样做有可能是为了数据维护的时候比较灵活,在做大数据量修复的时候不需要考虑到约束的限制.也有可能是不想把数据库结构描述的很清楚,这样就算别人得到了数据库,也不容易分析出实体关系,增加别人模仿时的难度(呵呵,我是这样想的,也许不对啊).

宽甸满族自治县13015562660: SQL server 问题,什么是外键,什么是主键?一个表的外键可以是另一个表的主键吗? -
职知福德: 主键 (Primary Key) 中的每一笔资料都是表格中的唯一值.换言之,它是用来独一无二地确认一个表格中的每一行资料.主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位).主键可以包含一或多个栏位....

宽甸满族自治县13015562660: SQL数据库中的外键 是怎么输入的 -
职知福德: 建立外键像一楼写的那样就可以了,但是这个外键是要你去写的,关系是需要使用者人为创建的,不是自动填写的.而且插入的外键值必须是主键已存在或空值才可以插入外键.希望对你有帮助.

宽甸满族自治县13015562660: “SQL Server”中的“键”是什么意思?主键和外键是什么? -
职知福德: 这需要理清几个概念: 1.候选键: 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码. 2.主键:当有多个候选码时,可以选定一个作为主码,选定的候选码...

宽甸满族自治县13015562660: sqlserver主键与外键是什么,在建表中起什么作用.谁能详细说一下
职知福德: 在数据库的表中,标识表的唯一记录的标题字段,可以是一个,也可以是多个.而这个标题字段就是主键.数据库中的表都是有一定关联的.而我们就是通过外键就可以进行表与表的关联.比如A表中的一个字段是B表中的主键.那么它就是A表的外键 sqlserver数据类型有很多.不能一一列举.请参考.包括主外键介绍http://www.dushuwu.net/csskan.aspx?NewsID=136 希望对您有所帮助吧.

宽甸满族自治县13015562660: sql server 外键有什么用 -
职知福德: 主键是在一个数据表中建立的唯一索引,用于在数据库层面保证数据合乎这个索引规范;例如不能存在两个身份证一样的人员信息 外键是保证数据表中的数据存在前提是在另一张数据表中事先存在对应外键的数据;例如要先有人员信息才能有这个人员的工资信息,那工资表就要与人员表建立外键;

宽甸满族自治县13015562660: 请问数据库中的主键和外键是什么意思? -
职知福德: 主键是唯一标示数据项的属性.可以是复合的几个属性.外键对应着各数据项的关系,唯一标示该数据项和其有关系的数据项,也就是和这个数据项有关系的另一个数据项的主键.由于学的时间挺长的了所以标准的称谓不清楚了.呵呵.

宽甸满族自治县13015562660: SQL数据库主键与外键的关系
职知福德: 表中的字段都要手写上去的. 主键一般是用来约束自身的,一般值要唯一 外键是外部引用约束,含义是其值必须在所引用的表中字段中存在

宽甸满族自治县13015562660: sql server 2000 主键 外键 -
职知福德: 不一定!它的值要求与主表的主键或者唯一键相对应主键:表中有一列或几列组合的值能用来唯一地标识表中的每一行,这样的一列或者多列的组合叫做表的主键.外键:外键就是用来确保“子表”中的某个数据项在“主表”中必须存在,就是“子表”中对应于“主表”的列,在子表中称为外键或者引用键,它的值要求与主表的主键或者唯一键相对应,外键用来强制引用完整性.

宽甸满族自治县13015562660: 请问SQL server 中的主键和外键的作用 -
职知福德: 主键是对表的约束,保证数据的唯一性!外键是建立表于表之间的联系,方便程序的编写!!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网