2009-09-01 192 views
1

我有一个新的布局推测它有3个表正确FK PK关系

UnfiledFiles
SortedFiles
文件版本

的进程将开始与UnfiledFile记录和文件版本,有数种版本可能会被添加全部加入到相同的UnfiledFile
从那里我需要将一个特定的UnfiledFile记录与一个SortedFile记录绑定的所有版本。

您认为哪种组织最适合您?

回答

1

为什么要将UnfiledFilesSortedFiles作为单独的表格存储?看起来被解体和被排序只是文件的一个属性。

所以你需要两个表:FilesVersionsVersions包含一个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; 
+0

这是一个优雅和简单的解决方案...我的帽子是关闭你 – MarkKGreenway 2009-09-02 19:47:30

0

UnfiledFiles表中的外键,即SortedFiles表中的主键。

UnfiledFiles表中的外键,即FileVersion表中的主键(假设这也是一对多关系)。