繁体   English   中英

如何将数据表标准化为3NF

[英]How to normalize data table to 3NF

我不明白如何将数据库表标准化为3NF?

FileName    FileName
Directory   Directory
FileType    FileType (Image, Archive, Movie)
PType           Freeware or shareware (need to be buyed)
UploadedDateTime Uploaded date time 
CheckedDateTime Checked date time
FileSize    size of file
Keywords    like: family, home, work, etc (something like tags)

据我了解,我们需要创建3个其他表(用于fileTypes,PTypes和关键字)和3个连接表。 我对吗?

您可以为FileType,PType和关键字保留单独的表。 例如,FileType有两列-id和type。 对于Ptype和关键字也是如此。

进一步,Directory:FileName是一个1:N关系。 因此,将有一个Directory表和一个FileName表,其中目录ID为外键。

FileName:关键字和FileName:FileType是N:N关系。 我假设FileName:FileType为N:N,因为文件可能是压缩电影(存档+电影)。

不知道FileName:PType是否为N:N。 但是取决于您的用例。 我认为它是1:N。 FileName可以是免费软件或共享软件,不能同时使用。 一个简单的外键关系就足够了,不需要“连接”表。

我假设日期将是FileName和Directory表的属性(列),不是吗? 如果日期是从目录导出的(该目录中所有FileName的最大日期),则您不需要目录表中的该列,因为它是从其他字段中计算出来的。

我希望这些足以让您入门。

更新:

文档名称

+----+----------+-------+------+------------------+
| id | filename | dates | size | directoryid (FK) |
+----+----------+-------+------+-------------+----+

目录

+----+---------+-------+------+
| id | dirname | dates | size |
+----+---------+-------+------+

如果从文件名表派生,则不需要日期

如果从文件名表派生,则不需要大小

filename_keyword

+-----+-------------+-----------------+
| id  | fileid (FK) |  keywordid (FK) |
+-----+-------------+-----------------+

filename_ptype

+----+-------------+--------------+
| id | fileid (FK) | ptypeid (FK) |
+----+-------------+--------------+

如果filename只能有一个ptype,则将ptype_id添加到文件名表中作为外键。 不需要filename_ptype。

filename_filetype

+----+-------------+-----------------+
| id | fileid (FK) | filetypeid (FK) |
+----+-------------+-----------------+

ptype

+----+-------+
| id | ptype |
+----+-------+

关键词

+----+---------+
| id | keyword |
+----+---------+

文件类型

+----+----------+
| id | filetype |
+----+----------+

文件类型的可能值为:图像,档案,电影,音频等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM