如何在SQL Server中使用外键

问题描述 投票:1回答:2

我有以下问题:假设我们有一个Chen表示法1:n和m:n。

所以1有一个主键,而n也有一个外键?在n中?

[第二个问题是关于m:n的,都具有主键,由于m:n,我还需要1个表,我是否要在第3个表中将两个主键都键入为外键?

sql-server tsql
2个回答
1
投票

1:n关系的示例:客户和订单

一个客户可能有多个订单。在这种情况下,您希望订单表中的一列具有一个外键,该外键引用客户表的主键。

样本DDL:

create table customers (
    id int primary key,
    name varchar(50),
    email varchar(50)
);

create table orders (
    id int primary key
    price float,
    customer_id int foreign key references customer(id)
);

n:m关系的示例:书籍和作者

一本书可能由多位作者撰写。作者可能写了不止一本书。您创建一个桥表,也称为联结表,称为books_authors,以表示该关系,并包含指向其他两个表的外键。

示例:

create table books (
    id int primary key,
    name varchar(50)
);

create table authors (
    id int primary key,
    name varchar(50)
);

create table books_authors(
    book_id int foreign key references books(id),
    author_id int foreign key references authors(id),
    constraint pk_books_authors primary key(book_id, author_id)
);

0
投票

所以1有一个主键,n也有,我在哪里键入外键?在n?

[外键位于n中,因为1可以有很多键,但是您不能拥有一个包含多个值的字段,因此每个字段必须有一个值,所以它位于n中。

第二个问题是关于m:n的,都具有主键,由于m:n,我还需要1个表,我是否要在第3个表中将两个主键都作为外键键入?

是的,因为实际上第三个表与两个表都具有多对一关系。

© www.soinside.com 2019 - 2024. All rights reserved.