首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过识别函数依赖关系证明SQL数据库在3NF中

通过识别函数依赖关系证明SQL数据库在3NF中
EN

Stack Overflow用户
提问于 2018-06-29 11:25:22
回答 1查看 380关注 0票数 0

有以下表格

代码语言:javascript
复制
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是好的,但是我不知道这些函数依赖关系在这个表上会是怎样的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-06-29 13:24:10

看起来您的问题归结为:如何从SQL数据库(或SQL模式或SQL表)派生函数依赖项?

首先,看看唯一的约束(primary keyuniqueunique index等),这些唯一的约束给出了函数依赖的左侧。例如,在

代码语言:javascript
复制
CREATE TABLE venues(
    id serial PRIMARY KEY,
    NAME TEXT,
    address TEXT
    );

FD id->名称、地址保持不变.名称->地址和地址->名称不保存。该表允许这类数据。应该这样吗?

代码语言:javascript
复制
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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51100670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档