具有下表
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,但是我不确定这些功能依赖关系在表中的样子。
谢谢
答案 0 :(得分:1)
您的问题似乎可以归结为:如何从SQL数据库(或SQL模式或SQL表)获得功能依赖性?
首先,查看唯一性约束(primary key
,unique
,unique index
等。唯一性约束为您提供功能依赖项的左侧。例如,在
CREATE TABLE venues(
id serial PRIMARY KEY,
NAME TEXT,
address TEXT
);
FD ID-> NAME,地址保留。 NAME->地址和地址-> 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
您的某些表没有唯一约束。那对你来说是个问题。
某些表应具有多个唯一约束。在上表中,可能在名称,地址或配对上需要唯一的约束。