2 luan55555 luan55555 于 2015.05.28 12:21 提问

为什么数据库中同一个关系表中的属性名是不能重名的,不同的关系表中的属性名是可以重?能举个例子吗?

为什么数据库中同一个关系表中的属性名是不能重名的,不同的关系表中的属性名是可以重?能举个例子吗?

9个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.28 12:23

比如
三张表:学生(学号,姓名),课程(课程名,课程编号),选课(学号,课程号,成绩)
学生表中不能有都叫学号的属性名,比如学生(学号,学号)就是有问题的,表里无法区分这两个学号,也就是同一个关系表中的属性名是不能重名的
学生表和选课表就都能有学号属性,也就是不同的关系表中的属性名是可以重

Theo_Yan
Theo_Yan   2015.05.28 12:30

拿java的命名规则来举例,java的类的全名是 包名+类名,所以同一个包内不能有重名类, 就好比你去一个房间找人 到了指定的房间根据指定的名字找到目标人物(当然假设你不认识那个人),如果有同名的人,怎么确定你要找的是哪一个呢。

edouardzyc
edouardzyc   2015.05.28 12:48

如果同一个表里面有重名的你在执行SQL语句的时候 Table.colonne怎么知道到底是哪个字段呢
不同的关系表中的属性名因为有不同表这个前提呗

u012589676
u012589676   2015.05.28 15:22

我说句难听的话楼主不要介意啊,这个问题有点幼稚,这是数据基本概念问题,就是关系中的属性具有唯一性,说白了就是表中的字段是不能重名的,重名就有矛盾了,我查询的时候该取哪一个值呢?

u012377333
u012377333   Rxr 2015.05.28 18:57

这个是关系数据库的唯一性原则

qq_28398447
qq_28398447   2015.05.29 12:44

关系数据库特性之一,原子性。
希望能解答你的问题。

sinat_28597179
sinat_28597179   2015.05.30 10:44

这是关系数据库的规范,如果有关系的两张表中有同一个名字的字段,操作的时候分不清,所以有唯一性的规范

lzp_lrp
lzp_lrp   Ds   Rxr 2015.05.30 10:46

按照数据库理论来说,属性名是不可以重名的,无论是在同一个关系还是非同一个关系,例如你用建模工具时建模时,如果重名系统就会不允许,会提示错误

guwei4037
guwei4037   Ds   Rxr 2015.05.30 10:56

一张表对应一个实体,比如你设计一个管理员表,它可以包含姓名这个字段;普通用户表,它也可以包含姓名这个字段。

Csdn user default icon
上传中...
上传图片
插入图片