创建SQL数据库。具有多个主键和外键
我目前正在完成一项任务,该任务要求我使用SQL Server Express创建SQL数据库。这就是它所要求的: 这是我尝试运行的代码创建SQL数据库。具有多个主键和外键,sql,sql-server,Sql,Sql Server,我目前正在完成一项任务,该任务要求我使用SQL Server Express创建SQL数据库。这就是它所要求的: 这是我尝试运行的代码 CREATE DATABASE db_Library Go USE db_Library CREATE TABLE tbl_library_branch ( library_branch_branch_id INT PRIMARY KEY NOT NULL IDENTITY (1,1), library_branch_branch_nam
CREATE DATABASE db_Library
Go
USE db_Library
CREATE TABLE tbl_library_branch
(
library_branch_branch_id INT PRIMARY KEY NOT NULL IDENTITY (1,1),
library_branch_branch_name VARCHAR(50) NOT NULL,
library_branch_address VARCHAR(50) NOT NULL
);
CREATE TABLE tbl_publisher
(
library_publisher_publisher_name VARCHAR(50) PRIMARY KEY NOT NULL,
library_publisher_address VARCHAR(50) NOT NULL,
library_publisher_phone INT NOT NULL
);
CREATE TABLE tbl_books
(
library_books_book_id INT PRIMARY KEY NOT NULL IDENTITY (1,1),
library_books_title VARCHAR(50) NOT NULL,
library_books_publisher_name VARCHAR(50) NOT NULL CONSTRAINT fk_library_books_publisher_name FOREIGN KEY REFERENCES tbl_publisher(library_publisher_publisher_name) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE tbl_book_authors
(
library_book_authors_book_id INT NOT NULL CONSTRAINT fk_library_book_authors_book_id FOREIGN KEY REFERENCES tbl_books(library_books_book_id) ON UPDATE CASCADE ON DELETE CASCADE,
library_book_authors_author_name VARCHAR(50) NOT NULL
);
CREATE TABLE tbl_book_copies
(
library_book_copies_book_id INT NOT NULL CONSTRAINT fk_library_book_copies_book_id FOREIGN KEY REFERENCES tbl_books(library_books_title),
library_book_copies_branch_id INT NOT NULL,
library_book_copies_number_of_copies INT NOT NULL
);
CREATE TABLE tbl_book_loans
(
library_book_loans_book_id INT NOT NULL,
library_book_loans_branch_id INT NOT NULL,
library_book_loans_card_no INT NOT NULL,
library_book_loans_date_out INT NOT NULL,
library_book_loans_date_due INT NOT NULL
);
CREATE TABLE tbl_borrower
(
library_borrower_card_no INT PRIMARY KEY NOT NULL IDENTITY (1,1),
library_borrower_name VARCHAR(50) NOT NULL,
library_borrower_address VARCHAR(50) NOT NULL,
library_borrower_phone VARCHAR(50) NOT NULL
);
以库“Books”为例,看起来我需要将BoodID作为主键,将Title作为主键,但每个表不能有多个主键
然后我必须从Book\u Copies表和Book\u Loans表中获取BookID,并连接到Books中标题的主键
我在这一点上已经无能为力了,如果您认为有任何资源可以帮助我,我将不胜感激。没有必要这么详细。我想你想要更像这样的东西(两张桌子): 注:
- 对于所有表,请坚持使用合成主键。即,
列identity
- 其他列可以声明为
。那很好唯一
- 我打字很快。但我很快就会对一遍又一遍地输入
感到警惕。这种重复只会使编写和读取查询变得更加困难library\u book\uu
CREATE TABLE tbl_publisher (
publisher_id int IDENTITY(1, 1) PRIMARY KEY,
publisher_name VARCHAR(50) NOT NULL UNIQUE,
address VARCHAR(50) NOT NULL,
phone INT NOT NULL
);
CREATE TABLE books (
book_id INT IDENTITY (1,1) PRIMARY KEY,
title VARCHAR(50) NOT NULL UNIQUE,
publisher_id INT NOT NULL CONSTRAINT fk_books_publisher__id FOREIGN KEY REFERENCES tbl_publisher(publisher_id) ON UPDATE CASCADE ON DELETE CASCADE
);