我有一个新的布局,以确定它有3个表
UnfiledFiles
SortedFiles
FileVersion
该过程将从UnfiledFile Record和FileVersion开始,并且可以添加多个版本,所有版本都加入到同一个UnfiledFile中
从那里开始,我需要将特定UnfiledFile记录的所有版本与SortedFile记录联系起来。
您认为哪种组织最适合?
答案 0 :(得分:1)
为什么将UnfiledFiles
和SortedFiles
存储为单独的表?看来,未归档与排序只是文件的属性。
所以你需要两个表:Files
和Versions
。 Versions
包含Files
的外键。 Files
包含属性列is_sorted
。
CREATE TABLE Files (
file_id INT PRIMARY KEY,
is_sorted INT NOT NULL DEFAULT 0
);
CREATE TABLE Versions (
file_id INT NOT NULL,
version INT NOT NULL,
PRIMARY KEY (file_id, version),
FOREIGN KEY (file_id) REFERENCES Files (file_id)
);
如果您想清楚查询哪些文件,可以创建视图:
CREATE VIEW UnfiledFiles AS SELECT * FROM Files WHERE is_sorted = 0;
CREATE VIEW SortedFiles AS SELECT * FROM Files WHERE is_sorted <> 0;
答案 1 :(得分:0)
UnfiledFiles表中的外键,即SortedFiles表中的主键。
UnfiledFiles表中的外键,即FileVersion表中的主键(假设这也是一对多关系)。