2015-12-01 157 views
0

我是SQL和數據庫設計的新手。設計SQL Server數據庫

我有,我需要創建一個表與用戶(學生或教師)任務,每個用戶可以是一組以上,並且每一組可以得到一個或多個任務來解決。

我創建了設計,但我認爲是實體group的問題,因爲當我在那裏添加數據時,我無法做到這一點(我只有ID,但沒有其他數據。當然我做錯了)。

將數據添加到user實體工作。

我應該更改什麼或應該如何將用戶添加到組中?

enter image description here

+0

我看你需要三個表:用戶,組和任務(有些喜歡奇異的名字,這只是我用複數)。你在正確的軌道上使用所有表的ID。我將添加一個更具體的答案。 –

+0

「當我在那裏添加數據[組]時,我無法做到」你想添加什麼數據? –

+0

好吧,我需要創建人羣 – Andrew

回答

0

這是一個可能的方式做到這一點?

insert into [group] (group_id) values((SELECT ISNULL(MAX([group_id])+1,1) FROM [group] WITH(SERIALIZABLE, UPDLOCK))) 

insert into [Entity3] values(1,1) //values(x,y) x - user_id, y - group_id where I want to add the user 
insert into [Entity3] values(2,1) 
insert into [Entity3] values(3,1) 

這是按預期工作,但也許更短或更容易?

1

嘗試添加更多的信息對每個組?如果是這樣,這將是有意義的分組表在這些列中添加更多的列就像用戶表並添加組相關數據:

group(id, name, type, description) 
user(id, name, ......) 

所以舉例來說,如果你想更新任何組的名稱,只需更新組列該組ID

-2

你或許應該擺脫2個綠色的實體。您可以將一個user_id值添加到組中,以及任務實體。您可能還需要爲您的組添加「task_id」列。然後,您將添加您的用戶,並從中填充組表。然後,您將通過user_id或group_id或兩者來分配您的任務。另外,在任務列中,您可能需要添加「狀態」列以定義任務是否預計完成或錯誤不完整。最後,爲了讓資源更友好一點,您可以選擇創建一個「任務完成」表,它是user_id,group_id,task_id和status。然後,您可以創建一個過程,在給定的時間框架之後歸檔舊任務。

對於一個非常好的資源來構建輕量級數據庫的視覺效果,你可以使用(https://www.vertabelo.com/),一旦你有像上面那樣的線框,它可以導出到SQL創建腳本。

2

像這樣的東西應該工作:

USERS 
----- 
user_id (pk) 
name 
surname 
email 

GROUPS 
------ 
group_id (pk) 
groupName 

TASKS 
----- 
task_id (pk) 
taskName 

USERSGROUPSM2M (Many-to-Many table) 
------------- 
id (pk) 
user_id (fk) 
group_id (fk) 

你可以有GROUP_ID#1和#42,或任意組合的user_id#1

GROUPSTASKSM2M (Another Many-to-Many table) 
------------- 
id (pk) 
group_id (fk) 
task_id (fk) 

你可以有task_ids#GROUP_ID#7 3,#76,或任意組合