在mysql中创建一对一关系表是一种很好的做法吗?

时间:2016-07-21 20:01:17

标签: mysql

使用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之外还有什么关系吗?

1 个答案:

答案 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中更容易和更清晰)。