【问题标题】:How many tables is acceptable in a Database?一个数据库中可以接受多少个表?
【发布时间】:2016-04-17 15:43:29
【问题描述】:

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

这是不好的做法吗?原因是我有几个功能要合并到此服务中,这要求我为每个文件夹都有一个表,即权限/不同的访问级别。

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

User1 具有仅查看权限。

User2 具有编辑权限。

User3 具有完全访问权限。

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

我认为这不是一个好的做法的原因是数据库中的表数量?

【问题讨论】:

  • 在基于意见关闭问题之前,我建议您绘制 ER 图...您将能够更好地完成表格。
  • 您为每个文件夹使用 1 个表只是为了避免使用权限表?
  • Folders----Permissions--
  • 在应用程序的正常操作中需要更改数据库架构是code smell。你应该(几乎)永远不想/不需要这样做。
  • 回答标题中的问题,我认为在1万亿张表之后,数据库变得有些笨拙。

标签: database database-design


【解决方案1】:

我建议为文件夹设置一个表,为用户设置另一个表,为用户文件夹权限设置第三个表。如果您正在创建许多具有相同列的表,那么您可能没有正确规范化。

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 表称为联结表,它允许文件夹和用户之间的多对多关系,只需为每个文件夹/用户组合添加一行。

【讨论】:

    猜你喜欢
    • 2012-07-30
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2011-08-14
    相关资源
    最近更新 更多