为什么数据库中同一个关系表中的属性名是不能重名的,不同的关系表中的属性名是可以重?能举个例子吗?
比如
三张表:学生(学号,姓名),课程(课程名,课程编号),选课(学号,课程号,成绩)
学生表中不能有都叫学号的属性名,比如学生(学号,学号)就是有问题的,表里无法区分这两个学号,也就是同一个关系表中的属性名是不能重名的
学生表和选课表就都能有学号属性,也就是不同的关系表中的属性名是可以重
拿java的命名规则来举例,java的类的全名是 包名+类名,所以同一个包内不能有重名类, 就好比你去一个房间找人 到了指定的房间根据指定的名字找到目标人物(当然假设你不认识那个人),如果有同名的人,怎么确定你要找的是哪一个呢。
如果同一个表里面有重名的你在执行SQL语句的时候 Table.colonne怎么知道到底是哪个字段呢
不同的关系表中的属性名因为有不同表这个前提呗
这个是关系数据库的唯一性原则
关系数据库特性之一,原子性。
希望能解答你的问题。
这是关系数据库的规范,如果有关系的两张表中有同一个名字的字段,操作的时候分不清,所以有唯一性的规范
按照数据库理论来说,属性名是不可以重名的,无论是在同一个关系还是非同一个关系,例如你用建模工具时建模时,如果重名系统就会不允许,会提示错误
一张表对应一个实体,比如你设计一个管理员表,它可以包含姓名这个字段;普通用户表,它也可以包含姓名这个字段。
我说句难听的话楼主不要介意啊,这个问题有点幼稚,这是数据基本概念问题,就是关系中的属性具有唯一性,说白了就是表中的字段是不能重名的,重名就有矛盾了,我查询的时候该取哪一个值呢?