【问题标题】:Proving SQL Database is in 3NF by identifying functional dependencies通过识别功能依赖关系证明 SQL 数据库在 3NF 中
【发布时间】:2018-07-01 21:15:20
【问题描述】:

有以下表格

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 的方法会很好,但是我不确定这些函数依赖关系在这些表上会是什么样子。

谢谢

【问题讨论】:

  • “我在想也许一种顺序证明数据库处于 1NF,然后是 2NF,然后是 3NF 的方法会很好......”不,你只有要做的是证明每个关系(每个表)都在 3NF 中。根据定义,在 3NF 中的任何关系也同时在 2NF 和 1NF 中。

标签: sql database functional-programming dependencies 3nf


【解决方案1】:

看来您的问题可以归结为:如何从 SQL 数据库(或 SQL 架构或 SQL 表)中获取函数依赖关系?

首先,查看唯一约束(primary key、unique、unique index 等。唯一约束为您提供函数依赖的左侧。例如,在

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

FD id->NAME,地址保存。 NAME->address 和 address->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

您的某些表没有唯一约束。这对你来说是个问题。

有些表应该有多个唯一约束。在上表中,您可能需要对名称、地址或对的唯一约束。

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多