数据库中可接受多少个表?

时间:2016-01-12 20:54:46

标签: database database-design

我目前正在为文件共享服务设计数据库。在此服务上创建的每个文件夹都有自己的表(Folder_),每个文件夹也将添加到具有文件夹及其所有者的表中。

这是不好的做法吗?我之所以有这样的原因,我希望将这些功能合并到这个服务中,这需要我为每个文件夹创建一个表,即权限/不同访问级别。

例如,文件夹A的所有者添加了3个用户对文件夹User1,User2,User3具有不同级别的访问权限。

User1仅具有查看权限。

User2具有编辑权限。

User3具有完全访问权限。

除了为每个文件夹创建一个表之外我无法看到另一个这样做的原因是,如果我有一个具有常用属性的文件/文件夹表,我可以将有权访问该文件夹的用户放在哪里他们的许可水平?另外,User1如何通过对整个数据库等的大搜索来查看他们有权访问的文件夹

我认为这不是一个好习惯的原因是数据库中的表数量是多少?

1 个答案:

答案 0 :(得分:2)

我建议用于文件夹的单个表,用户的另一个表和用户文件夹权限的第三个表。如果要创建许多具有相同列的表,则可能无法正确规范化。

Table: Folders
    FolderId
    FolderName
    OwnerUserId     -- references Users table to identify the owner
    (additional columns as necessary to describe a single folder)

Table: Users
    UserId
    UserName
    (additional columns as necessary to describe a single user)

Table: FolderUsers
    FolderId    -- references Folders table
    UserId      -- references Users table
    Permission  -- (ViewOnly, Edit, Full, etc)

FolderUsers表称为联结表,它允许文件夹和用户之间的多对多关系,只需为每个文件夹/用户组合添加一行。