2017-06-15 38 views
0

例如,我有一個3臺如何將數據分成許多表

Table name: Role 
table Attributes: roleid (pk), rolename 

角色到用戶一對多

Table name: user 
table Attributes: roleid (fk), userid(pk), trackingid(fk) username, password, email 

用戶黏合一對一

Table name: tracking 
table Attributes: trackingid(pk) approvalstatus*, status, createdby, createdDate(yyyy-mm-dd). 

*屬性含義 審批狀態 - 管理員將批准任何更改,以便可以暫掛,批准或拒絕

狀態是指示更改請求是新用戶/編輯還是刪除用戶。

如何插入語句以插入新用戶進行審批。因爲,當你在數據庫中插入數據應該看起來像這樣

+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+ 
| username | password |  email  | rolename | status | approvalstatus | createdby | createdDate | 
+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+ 
| harry | password | [email protected] | Admin | New | Pending  | Barry  | 2016-09-20 | 
+----------+----------+--------------------+----------+--------+----------------+-----------+-------------+ 
+0

請不要標記垃圾郵件無關的產品。標記您實際使用的DBMS。 – Siyual

回答

-1

這真的取決於你如何與數據庫交互。

如果您使用的是像Entity Framework或NHibernate這樣的ORM,這取決於您如何映射表格。

有關此,請查看信息:

  1. Entity Framework
  2. NHibernate

如果你這樣做是直接到SQL Server,你可以使用以下命令:

  1. 存儲過程 - 在這種情況下,您將在您的DB服務器上調用單個存儲過程呃,這將根據您的輸入爲您做三個插入。
  2. 您可以使用單個連接對數據庫執行3個操作。

不管您是否選擇Stored Proc。或手動聲明你的插入會看起來像:

INSERT INTO ROLE (RoleID, RoleName) VALUES (newID(), 'Your Role Name'); --If you have auto increment on your PK you can ignore inserting into RoleID. Most Systems I work with now use GUID's for ID's so this is just an example. 

INSERT INTO User (RoleID, UserID, TrackingID, UserName, Password, Email) Values (....) 

INSERT INTO Tracking (TrackingID, ApprovalStatus, Status, CreatedBy, CreatedDate) values (....) 

一旦你在你的數據庫中的條目可以更新使用:

UPDATE Tracking SET ApprovalStatus = 'whatever you want here' where id = X 

如果你需要保持跟蹤的歷史,而不是更新跟蹤,您需要插入一個新行,並且始終確保何時選擇數據,您將獲得基於DateTime郵票的最新郵件。

您的問題中的表格具有誤導性。你加入三張表來獲得這些結果,這可能是你想要的結果。

+0

如果沒有提供關於投票表決的原因,請不要投下一個答案。 –

+0

只是問我是否使用webform asp.net來允許用戶輸入。假設用戶必須爲每個表中的列手動輸入數據。我是否必須爲每個表格創建一個單獨的webform,或者我可以使用製表符導航到不同的表格。 –

+0

您可以爲此使用單個網絡表單,顯示數據的方式與您存儲數據的方式並不「真正」相關。 –