有以下表格
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)
);我在想,也许一种顺序地证明数据库的方法是1NF,然后是2NF,然后3NF是好的,但是我不知道这些函数依赖关系在这个表上会是怎样的。
谢谢
发布于 2018-06-29 13:24:10
看起来您的问题归结为:如何从SQL数据库(或SQL模式或SQL表)派生函数依赖项?
首先,看看唯一的约束(primary key、unique、unique index等),这些唯一的约束给出了函数依赖的左侧。例如,在
CREATE TABLE venues(
id serial PRIMARY KEY,
NAME TEXT,
address TEXT
);FD id->名称、地址保持不变.名称->地址和地址->名称不保存。该表允许这类数据。应该这样吗?
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有些表没有唯一的约束。这对你来说是个问题。
有些表应该有一个以上的唯一约束。在上表中,您可能需要对名称、地址或对进行唯一的约束。
https://stackoverflow.com/questions/51100670
复制相似问题