







uj5u.com熱心網友回復:
邏輯要理順,幾個主要的物件:專案、成員、檔案
用戶可以屬于多個專案的成員;
用戶可以在專案下上傳檔案,檔案可以私有或專案組共享;
用戶可以查看自己所屬專案下的私有檔案和共享檔案;
user(uid)
project(pid)
project_member(pid, uid)
file(id, pid, uid, see_type) // see_type可見型別 1-私有 2-共享
至于按鈕權限,你可以在頁面上根據用戶角色區分,也可以配置角色按鈕權限
uj5u.com熱心網友回復:
用這個sql啊
select * from 檔案表 A where (A.專案id in (
select B.audit_id from 中間表 B where user_id = ?
)
and A.status = 0 and A.user_id != ?) or A. user_id == ?
你不要和我說檔案表沒有專案id,如果沒有,那么這個表設計絕對有問題。
你用戶對應多個專案,檔案表沒有專案id,根本就沒法判斷這個檔案是屬于哪個專案的。
如果是你自已做的專案,趕緊加上這個欄位,如果不是自已的,趕緊把問題反饋給你組里能做主的大佬。
uj5u.com熱心網友回復:
實際上為了符合資料庫第三范式,你應該單獨分出一個表來記錄檔案屬性才對,不應該讓檔案顯示級別和專案id混在一起。我發現我眼花了,你檔案表里是有專案id的
select * from 檔案表 A where (A.draftAuditProjectId in (
select B.audit_id from 中間表 B where user_id = ?
)
and A.status = 0 and A.user_id != ?) or A. user_id == ?
uj5u.com熱心網友回復:
SELECT
*
FROM
act_evidence ae
LEFT JOIN sys_audit_user sau ON sau.user_id = ae.user_id
LEFT JOIN sys_user su ON sau.user_id = su.user_id
LEFT JOIN sys_audit sa ON ae.draftAuditProjectId = sa.audit_id
WHERE
sau.user_id
AND ae.STATUS = 0
OR 1
ORDER BY
ae.STATUS DESC
uj5u.com熱心網友回復:
我是這樣寫的
uj5u.com熱心網友回復:
你這樣寫效率不高而且LEFT JOIN會查出act_evidence表所有資料,還可能會多查出資料,你還用上了*號,那就更加坑了,*號一般在聯表查的時候不用直接使用,能指定欄位就指定欄位
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19313.html
標籤:Java EE
上一篇:誰能看出下面這段js代碼的作用
下一篇:StringRedisTemplate的opsForValue().setIfAbsent()方法是否存在bug?回傳值為null
