Я должен написать SQL-запрос из данной схемы:
BookAuthors
(ISBN, authorName, пол, название, год публикации, pubId, pubName, телефон)FD
= { ISBN -> title, pubId, yearPublished; имя автора -> пол; pubId -> pubName, телефон }
Вот что я написал:
CREATE TABLE Authors
(
authorName VARCHAR(64) PRIMARY KEY,
gender CHAR(1)
);
CREATE TABLE Publishers
(
pubId VARCHAR(32) PRIMARY KEY,
pubName VARCHAR(64),
phone NUMERIC(10)
);
GO
CREATE TABLE Books
(
ISBN VARCHAR(32) PRIMARY KEY NOT NULL,
title VARCHAR(32),
pubId VARCHAR(32) FOREIGN KEY REFERENCES Publishers(pubId) NOT NULL,
yearPublished NUMERIC(4)
);
Это правильный ответ? Меня беспокоит отсутствие связи между автором и книгой.
AuthorName
— очень плохая идея для первичного ключа — во-первых, абсолютно точно есть два автора с одинаковым именем, а во-вторых, такая большая колонка переменной длины — это ужасный выбор для первичного ключа в SQL Server и будет иметь крайне низкую производительность - person marc_s   schedule 24.01.2016