您可以为 FileType、PType 和关键字保留单独的表。例如,FileType 有两列 - id 和 type。Ptype 和关键字也是如此。
进一步, Directory : FileName 是 1:N 关系。所以会有一个 Directory 表和一个以目录 id 作为外键的 FileName 表。
FileName : Keyword 和 FileName : FileType 是 N:N 关系。我假设 FileName : FileType 是 N:N 因为文件可能是压缩电影(存档 + 电影)。
不确定 FileName : PType 是否为 N:N。不过,这取决于您的用例。我认为它是 1:N。FileName 可以是免费软件或共享软件,不能同时是两者。一个简单的外键关系在这里就足够了,不需要“连接”表。
我假设日期将是 FileName 和 Directory 表的属性(列),不是吗?如果日期是为目录派生的(该目录中所有文件名的最大日期),您将不需要目录表中的该列,因为它是根据其他字段计算的。
我希望这些足以让你开始。
更新:
文件名
+----+----------+-------+------+------------------+
| id | filename | dates | size | directoryid (FK) |
+----+----------+-------+------+-------------+----+
目录
+----+---------+-------+------+
| id | dirname | dates | size |
+----+---------+-------+------+
如果从文件名表派生,则不需要日期
如果从文件名表派生,则不需要大小
文件名关键字
+-----+-------------+-----------------+
| id | fileid (FK) | keywordid (FK) |
+-----+-------------+-----------------+
文件名_ptype
+----+-------------+--------------+
| id | fileid (FK) | ptypeid (FK) |
+----+-------------+--------------+
如果文件名只能有一个 ptype,则将 ptype_id 作为外键添加到文件名表中。不需要filename_ptype。
文件名_文件类型
+----+-------------+-----------------+
| id | fileid (FK) | filetypeid (FK) |
+----+-------------+-----------------+
类型
+----+-------+
| id | ptype |
+----+-------+
关键词
+----+---------+
| id | keyword |
+----+---------+
文件类型
+----+----------+
| id | filetype |
+----+----------+
文件类型的可能值是:图像、存档、电影、音频等。