Доказательство базы данных SQL в 3NF путем определения функциональных зависимостей - PullRequest
0 голосов
/ 29 июня 2018

Имея следующие таблицы

CREATE TABLE venues(
    id serial PRIMARY KEY,
    NAME TEXT,
    address TEXT
    );

CREATE TABLE movies(
    id serial PRIMARY KEY,
    title TEXT,
    YEAR INT);

CREATE TABLE genres(
    id serial PRIMARY KEY,
    NAME TEXT,
    description TEXT
    );

CREATE TABLE movies_genres(
    movie_id INT REFERENCES movies(id),
    genre_id INT REFERENCES genres(id)
    );

CREATE TABLE actors(
    id serial PRIMARY KEY,
    NAME TEXT
    );

CREATE TABLE movies_actors(
    movie_id INT REFERENCES movies(id),
    actor_id INT REFERENCES actors(id)
    );

CREATE TABLE screenings(
    id serial PRIMARY KEY,
    venue_id INT REFERENCES venues(id),
    movie_id INT REFERENCES movies(id),
    DATE TEXT,
    TIME TEXT
    );

CREATE TABLE sold_tickets(
    screening_id INT REFERENCES screenings(id),
    ROW INT NOT NULL,
    seat INT NOT NULL,
    unique(screening_id, ROW, seat)
    );
  • написанный в синтаксисе для PostgreSQL, как можно доказать, что эта база данных находится в третьей нормальной форме (3NF), идентифицируя функциональные зависимости? X -> Y

Я думаю, что, возможно, подход последовательной проверки базы данных - это 1NF, затем 2NF, затем 3NF, но я не уверен, как эти функциональные зависимости будут выглядеть в этих таблицах.

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Похоже, ваш вопрос сводится к следующему: как вы получаете функциональные зависимости из базы данных SQL (или схемы SQL, или таблицы SQL)?

Сначала рассмотрим уникальные ограничения (primary key, unique, unique index и т. Д. Уникальные ограничения дают вам левую часть функциональной зависимости. Например, в

CREATE TABLE venues(
    id serial PRIMARY KEY,
    NAME TEXT,
    address TEXT
    );

идентификатор FD-> NAME, адрес удерживается. ИМЯ-> адрес и адрес-> ИМЯ не держат. Таблица разрешает такие данные. Должно ли это?

id  NAME     address
--
1   Wilton Stage   123 Main St
2   Wilton Jazz    321 Main St
3   Wilton Stage   123 Main St
4   Wilton Patio   123 Main St
5   Hayes Lounge   123 Main St
6   Wilton Stage   124 Main St

Некоторые из ваших таблиц не имеют уникальных ограничений. Это проблема для вас.

Некоторые таблицы должны иметь более одного уникального ограничения. В приведенной выше таблице вам , вероятно, требуется уникальное ограничение на имя, адрес или пару.

...