【发布时间】:2019-07-03 12:24:15
【问题描述】:
我正在尝试确定我的文档共享系统方法是否良好(我正在使用 PHP 和 SQL)。我认为我构建了一个糟糕的数据库设计。
简单地说,这个概念是创建文档,与他人共享,使用评论系统获取更新和反馈。
用户可以与网络(内联网)上的任何其他用户共享他们的文档。用户可以访问其他用户与他们共享的文档,并在上面留下 cmets。
这是我的数据库架构
(删除了一些列,例如:created_time、user_ip...等)
- documents:
----------------------
-- document_id
-- document_title
-- document_content
-- document_category
- comments:
----------------------
-- comment_id
-- comment_content
-- document_id
-- user_id
- users:
----------------------
-- user_id
-- user_name
-- user_type
-- user_password
- permissions:
----------------------
-- document_id
-- user_id
用户登录系统后,PHP 会使用这个 SQL 查询查看他可以访问的所有文档:
SELECT d.document_title
FROM documents AS d, permission AS p
WHERE d.document_id = p.document_id AND p.user_id = '12'
上面的查询也用于授予文档的访问权限
现在想象为通过网络与 200 个用户共享的单个文档创建的行数,权限表中将有 201 行!我认为这是一种不好的方法
我正在尝试另一种方法,即将 permission 表更改为:
- permissions:
----------------------
-- document_id
-- users_ids
这将允许我将用户 ID 保存在每个文档的一列和一行中。但我不确定这是否是正确的方法,老实说,我不知道如何使用 PHP 和 SQL 来实现它
请给我建议并给我您的反馈
谢谢
【问题讨论】:
-
学习使用正确、明确、标准
JOIN语法。 从不在FROM子句中使用逗号。
标签: php mysql sql database database-design