簡體   English   中英

創建 SQL 數據庫。 有多個主鍵和外鍵

[英]Creating SQL database. with multiple primary and foreign keys

我目前正在完成一項要求我使用 SQL Server Express 創建 SQL 數據庫的作業。 這就是它的要求:使用 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_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_Copies 表和 Book_Loans 表中獲取 BookID 連接到 Books 中 Title 的主鍵?

我已經超出了這一點,並且會感謝您認為可以提供幫助的任何資源。

沒必要這么啰嗦。 我想你想要更像這樣的東西(兩張桌子):

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
);

筆記:

  • 堅持為所有表使用合成主鍵。 即, identity列。
  • 其他列可以聲明為unique 那也行。
  • 我打字很快。 然而,我很快就會對一遍又一遍地輸入library_book_保持警惕。 這種重復只會讓編寫和讀取查詢變得更加困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM