我正在構建一個員工頁面。將數據拆分爲多個表
一些信息進入一個「僱員」表,但它的一些進入所引用的「員工」表「可用性」表:
可用性: ID /僱員(從唯一的ID員工表)/星期一可用/等等和/
所以我沒有僱員表中唯一的ID,直到我創建它們。
它是細做一個查詢,我設置的員工信息,然後查詢來獲取僱員表的最後一個創建的行,然後使用唯一的ID從設置可用性...
或者是很混亂,我應該有一個創建員工頁面,然後設置可用性頁面?
所以基本上我想知道它是更清潔和更好的編碼來分離這兩個功能?
我正在構建一個員工頁面。將數據拆分爲多個表
一些信息進入一個「僱員」表,但它的一些進入所引用的「員工」表「可用性」表:
可用性: ID /僱員(從唯一的ID員工表)/星期一可用/等等和/
所以我沒有僱員表中唯一的ID,直到我創建它們。
它是細做一個查詢,我設置的員工信息,然後查詢來獲取僱員表的最後一個創建的行,然後使用唯一的ID從設置可用性...
或者是很混亂,我應該有一個創建員工頁面,然後設置可用性頁面?
所以基本上我想知道它是更清潔和更好的編碼來分離這兩個功能?
添加到@ Quassnoi的答案:
您將增加僱員記錄,然後使用MySQL LAST_INSERT_ID()
功能找到你添加的employee
記錄的自動遞增的唯一ID。然後,您可以將該值反饋回availability
INSERT
聲明。
更多細節MySQL手冊頁面上的http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html
您不要使用SELECT語句(如SELECT MAX(employee.id)
),因爲可能有其他用途添加記錄以及這一點很重要。 LAST_INSERT_ID()
是特定於您的連接
LAST_INSERT_ID()上的提示 – ian 2009-08-26 16:02:25
當然創建employee
首先,然後availability
。
如果您的表是InnoDB
,您可以在事務中執行此操作,以便在出現問題時可以回滾整個更新。
它是細做一個查詢時,我真想 員工信息,然後查詢到 獲得最後創建的行中的 職員表,然後用獨特 ID從設置 可用性...
是的,這聽起來不錯。如果您爲employeeid使用自動增量列,則可以使用mysql_insert_id()或等效值安全地檢索最後插入的id。不要做SELECT MAX(employeeid) FROM ....
,因爲當大量的人同時使用它時,你可能會遇到問題。
你可以很容易地通過
mysql_insert_id()
之後得到最後insered記錄,你可以插入所需員工的可用性記錄。 注意:我會選擇一個處理這些問題的框架,比如Symfony或Cake。
使用「最後創建的行」並不總是按照您期望的方式工作,並且如果有增長或其他程序員承擔該項目,將來可能會使事情複雜化。如果我明白你在找什麼,你應該有3張桌子。應該使用一張僱員表,一張可用表和一張第三張表來存儲關聯的唯一記錄。在關聯表中,每一行都有以下列:專用ID,員工ID,可用性ID。
是的,這是我的..'員工'表。一個用於'轉移',然後是可用性是它們之間的關聯。 – ian 2009-08-26 15:55:33
@GoodTimeTribe:你可以舉一些如何使用最後創建的行可能會使事情複雜化的例子嗎?我一直認爲它非常可靠,易於同事理解,但可能有其他情況我不知道。 – anschauung 2009-08-27 13:56:32
我知道我可以做到這一點......我想我想知道的是,如果它......「更好」分開來做。 – ian 2009-08-26 15:53:24