在DB中创建关系和外键

时间:2016-02-29 18:34:42

标签: mysql sql foreign-keys relationship

我在我的数据库中创建了3个表:files,filecontents和users。

filecontents'结构如下:

id___fileid___filesize___userid___version___path

files'是:

fileid___filesize___userid___filename___mimetype

users'

userid___username___password___email

那么关系和外键约束应该如何,这样用户可以拥有多个文件,每个文件可以有多个版本,因此fileid应该是一个独特的(我猜)。它就像 - 用户1有fileid 123。用户2包含不同的文件,但其文件ID应该从1重新开始。

2 个答案:

答案 0 :(得分:0)

据我所知,您在表格中只能有一个自动增量列。所以要做你想做的事,不应该是限制因素。

您需要使用SELECT fileid ORDER BY fileid DESC where userid = x

之类的内容查询最大的fileid

然后使用该fileid + 1插入新行。所以你会做类似的事情:

INSERT INTO xxx SET fileid=(SELECT fileid FROM files ORDER BY fileid DESC where userid=x), userid=x

话虽如此,如果fileid是主键而不是复合键,它应该是自动增量。因此,每个用户不应该有一组不同的fileid。

答案 1 :(得分:0)

userfile表之间的关系为one to manyuser and file_contents表的关系也是如此。 filefile_contents表之间的关系为one to one

Files.user_id将是表foreign中的users密钥,其中primary为密钥。 File_contents.user_id也是foreign密钥。 Files.fileID, users.userID and file_contents.id是各自表格中的所有primary个密钥。