高分悬赏!菜鸟关于sql server 中 主键 外键 的若干疑惑。。。。

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:17:11
(经常无缘无故删我问题,所以2分钟后确定发布成功了,我再追加悬赏分)

正在学习 sql server,遇到如下问题:
(由于自己菜鸟,所以问题表达可能不太准确,您理解我的意思就好)

1.主键列 一般 都用什么 数据类型? 为什么?

2.外键列 一般 都用 什么 数据类型? 为什么?

3.一个列 可以集 主键与外键 于一身吗? 这样做的话您觉得怎么样?建议?

4.例如有两个表:
basic 表(基本信息表) 和 other表(其他信息表)
我想让他们关联,
于是,
我设 basic表中 b_name 和 other表中 o_name 为关联字段,用的是如下语句:

alter table other
add constaint fk_o_name
foreign key(o_name) references basic(b_name)

那么,如果想成功设置该外键的话,
b_name 字段 和 o_name 字段 有什么要求?(比如必须各自是主键吗?必须是非空吗? 等等)

5.假设我用该方法成功设置了该外键,那么:

(1)我能在没删除 other表中 记录的前提下,删除basic表中的与之对应的记录吗? 如果不可以,怎么让他可以?请写出相关语句或操作方法

(2)我能在没删除 basic表中 记录的前提下,删除other表中的与之对应的记录吗? 如果不可以,怎么让他可以?请写出相关语句或操作方法

(2)如果,我删除了 basic 表中的一条记录,与之想对应的 other 表中 也会 自动删除这一记录吗?

如果不会,怎么让他会???请写出相关语句 或 具体操作方式

6.外键到底 特性 和 作用 是什么?
比如,
other 表中有的, 必须basic 表中也有?
ba

1.主键列 一般 都用什么 数据类型? 为什么?
什么类型都可以,只要是能够区别数据的项目可以设置成任何类型,比如身份证号当主键,可以用char型(因为有的身份证号是X结尾的),学号可以用int型,还可以用时间做主键 自然也就是日期型。

2、外键列 一般 都用 什么 数据类型? 为什么?
什么类型都可以,解释请参照1

3、一个列 可以集 主键与外键 于一身吗? 这样做的话您觉得怎么样?建议?
当然可以,而且这样做还是大多数情况,不是一个列的反倒不多见。

4、b_name 字段 和 o_name 字段 有什么要求?
这两个字段必须是表中的键,但不一定是主键。

5、(1)我能在没删除other表中 记录的前提下,删除basic表中的与之对应的记录吗?
不可以,解决办法请参照下面的网址中我的回答:
http://zhidao.baidu.com/question/114709115.html
有了这个回答(2)和(3)的问题就不回答了。

6、外键到底 特性 和 作用 是什么?
按照你的问题描述是结合外键的定义references后面的表是被参照表所以:
other 表中有的, 必须basic表中也有。
basic 表中有的, other 表中可以没有。

从这个角度也可以解释第5个问题中,为什么【在没删除other表中 记录的前提下,删除basic表中的与之对应的记录】是不可以的了。

---
以上,希望对你有所帮助。

主键和外键都是数据完整性的内容。
主键是用来标识表的唯一性的列,主键的特性就是不能重复。比如,学生表,主键为学号。一个学生表里不能存在同一学号不同姓名的学生。
外键是用来标识某个列是