我有一个新的布局推测它有3个表正确FK PK关系
UnfiledFiles
SortedFiles
文件版本
的进程将开始与UnfiledFile记录和文件版本,有数种版本可能会被添加全部加入到相同的UnfiledFile
从那里我需要将一个特定的UnfiledFile记录与一个SortedFile记录绑定的所有版本。
您认为哪种组织最适合您?
我有一个新的布局推测它有3个表正确FK PK关系
UnfiledFiles
SortedFiles
文件版本
的进程将开始与UnfiledFile记录和文件版本,有数种版本可能会被添加全部加入到相同的UnfiledFile
从那里我需要将一个特定的UnfiledFile记录与一个SortedFile记录绑定的所有版本。
您认为哪种组织最适合您?
为什么要将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;
UnfiledFiles表中的外键,即SortedFiles表中的主键。
UnfiledFiles表中的外键,即FileVersion表中的主键(假设这也是一对多关系)。
这是一个优雅和简单的解决方案...我的帽子是关闭你 – MarkKGreenway 2009-09-02 19:47:30