使用mysql dbms
我创建了一个客户表
create table customer
(id int ,
name varchar(3),
primary key(id));
现在我创建另一个表地址,我从客户表中创建唯一的外键(id)
create table customer_add
(hno int ,
block_name varchar(3),
street_no int,
town varchar(20),
state varchar(20),
cust_id int unique,
primary key(hno),
foreign key(cust_id) references winecustomer(id));
这是一个错误的方法吗?如果是,我应该如何建立一对一的关系? 除了onetoone,onetomany,manytomany之外还有什么关系吗?
答案 0 :(得分:0)
基于ERD(实体关系图),可以有1对1关系。但是,在创建表时,您可以选择哪一个获取另一个表的主键,因此成为外键。在ERD中,您还可以通过查看哪一个具有TOTAL / FULL参与来确定哪个应该具有其他表主键。
实施例: 员工--- 1 -----(有)---- 1 ---(经理)
这里我们说一个员工有一个经理,经理有一个员工。让我们说员工具有Employee_SSN属性然后在Manager表中我们可以将Employee_SSN作为引用Employee表的外键。或者,假设Manager具有M_SSN,则Employee将M_SSN作为引用Manager表的外键。但是,如果其中一个具有FULL / Total参与,那么那个将接收另一个表的主键。拥有1比1的关系是完全可以的(A 1比1,关系在ERD中更容易和更清晰)。