一对多数据库
⑴ sql 数据库 一对多查询
你怎么俩table1,后一个叫table2吧
执行以下语句
selectt1.考试学号,t1.科目,t2.考试成绩
from
(selecta.科目,a.科目ID,b.考试学号
from
(select科目,科目IDfromtable1)asa,
(selectdistinct考试学号fromtable2)asb)ast1leftjoin
table2ast2ont1.科目ID=t2.科目IDandt1.考试学号=t2.考试学号
结果截图
下边还有几条没显示全,凑合看吧
⑵ 数据库一对多怎么建立,还有主外键的区别
一对多:一个表的唯一健对应另一个表的某个字段 并且这个字段不是唯一的 这就是一对多
主键:唯一健 没的说 插入的值必须唯一
外键:简单地说 你对有外键的表操作的时候要满足外键的约束条件;不然不会让你操作
外键是属于约束的一种,所谓约束顾名思义,就是限制你在数据库的操作。而你对数据库有什么操作,无非是增、删、改、查,外键起的作用就是让你在数据库帮助的情况下更合理的增加数据的正确度。
外键的作用是能够避免如下情况。
如
【班级信息表】存放的是班级信息表。
【学生表】存放的是学生信息,包含班级信息。
这个时候 在【学生表】中存放的班级信息应该在【班级信息表】存在才合法,自己人为控制的话难免有漏掉的情况,用外键则可以让数据库自动控制,当插入【学生表】中的数据在【班级信息表】不存在的时候,数据库不允许插入。
⑶ 数据库中的一对多怎么设计表
//老公
class Husband implements java.io.Serializable{
private Integer id;
private String name;
private Set<Wife> wifes;//一个老公能拥有多个老婆
}
//老婆
class Wife implements java.io.Serializable{
private Integer id;
private String name;
}
/**
* create table Husband{
* id int primary key,
* name varchar
* }
* create table Wife{
* id int primary key,
* name varchar ,
* h_id int 外键
* }
*
* */
⑷ 数据库1对多的关系可以详细解释下么
函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
X称为这个函数依赖的决定属性集(Determinant)。
Y=f(x)
说明:
1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。
例: Student(Sno, Sname, Ssex, Sage, Sdept)
假设不允许重名,则有:
Sno → Ssex, Sno → Sage , Sno → Sdept,
Sno ←→ Sname, Sname → Ssex, Sname → Sage
Sname → Sdept
但Ssex -\→Sage
若X→Y,并且Y→X, 则记为X←→Y。
若Y不函数依赖于X, 则记为X-\→Y。
在关系模式R(U)中,对于U的子集X和Y,
如果X→Y,但Y 不为 X的子集,则称X→Y是非平凡的函数依赖
若X→Y,但Y 为 X的子集, 则称X→Y是平凡的函数依赖
例:在关系SC(Sno, Cno, Grade)中,
非平凡函数依赖: (Sno, Cno) → Grade
平凡函数依赖: (Sno, Cno) → Sno
(Sno, Cno) → Cno
部分函数依赖: 若x->y 并且,存在X的真子集x1,使得x1->y,则 y部分依赖于 x。
完全函数依赖:若x->y并且,对于x的任何一个真子集x1,都不存在x1->y 则称y完全依赖于x。
逻辑蕴含 举个例子:
y=f(x)
省=f(城市)
只要给出一个具体的城市值,就会有唯一一个省值和它对应,如"武汉市"在"湖北省".这里的"城市"是自变量x,"省"是因变量或函数值y.把x函数决定y,或y函数依赖于x表示为:x→y
设有关系模型R(A1,A2,...An),X和Y均为的子集,r是R的任一具体关系,t1,t2是r中的任意两个元祖.如果由t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y.
你所问的码是说主码与候选码么?
主码
我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。
常见的数据库主键选取方式有:
自动增长字段
手动增长字段
UniqueIdentifier
“COMB”类型
候选码:除了主码,全码里面剩下的码!
⑸ 一对一、一对多、多对多,如何设计数据表
一对一正确。
一对多和多对一是多个表 ,至少两个表,一对多和多对一是相互的内。容
主键是自己定义的,一般外键表引用的对应的表的键是主键。
多对多三个表,有一个是关系表(中间表)。
中间表没有普通字段,一般只有有两个外键,同时引用两个表,多对多就出来了。
⑹ 关于数据库一对多,多对一,多对多的问题
根据实际情况考虑就行了。
一个顾客可以拥有多本图书,一本图书只能被一个顾客拥有 1 vs 多
同理,顾客 vs 订单 1vs 多
管理员和图书的关系 多vs多
管理员和订单的关系 1vs 多
⑺ 数据库一对多,多对多
根据实际情况考虑就行了。
一个顾客可以拥有多本图书,一本图书只能被一个顾客拥有 1 vs 多
同理,顾客 vs 订单 1vs 多
管理员和图书的关系 多vs多
管理员和订单的关系 1vs 多
⑻ 一对多关系的数据库该怎么建立
例如:学来生的数据库,一自个老师教一个班
学生表里面有个教师ID字段,这个字段和老师表的教师ID字段就是多对一的关系,反过来就是一对多的关系,
Access:在有这两个表的数据库中,点击工具栏上的关系按钮,把老师表的教师ID字段拖拽到学生表的教师ID字段,并选择“实施参照完整性”这样关系就建立完成了。在老师表教师ID字段旁边会出现1,学生表教师ID字段旁边会出现无穷大,表示一对多关系