關於應用程式
此頁面上的命令檔內容僅適用於瀏覽用途,而且無法利用任何方式來更改內容。
應用程式具有下列目的、結構和命名慣例。
應用程式的用途
此應用程式適用於公司中的兩種使用者。
-
一般使用者 (員工經理)
-
Application administrators - 應用程式管理員
一般使用者可以完成下列任務:
-
取得指定部門的員工
-
取得指定員工的職務歷史記錄
-
顯示指定員工的一般資訊 (姓名、部門、職務、經理人員、薪資等等)
-
變更指定員工的薪資
-
變更指定員工的工作
應用程式管理員可以完成下列任務:
-
變更現有職務的 ID、職稱或薪資範圍
-
新增新工作
-
變更現有部門的 ID、姓名或經理人員。
-
新增部門
應用程式的結構
應用程式會使用下列綱要物件和綱要。
應用程式的綱要物件
應用程式由下列綱要物件組成:
-
四個表格,用來儲存下列資料:
-
工作
-
Departments
-
員工
-
員工的職務歷史記錄
-
-
四個版本檢視,其中涵蓋表格,可讓您使用以版本為基礎的重新定義 (EBR) 來升級使用中的已完成應用程式
-
強制執行業務規則的兩個觸發器
-
為新部門和新員工產生唯一主索引鍵的兩個順序
-
兩個套裝軟體:
-
employees_pkg,適用於一般使用者的應用程式介面 (API)
-
admin_pkg,應用程式管理員的 API
一般使用者和應用程式管理員只能透過其 API 存取應用程式。因此,他們只能透過呼叫配套子程式來變更資料。
-
另請參閱:
-
如需綱要物件的相關資訊,請參閱關於 Oracle Database
-
Oracle Database Development Guide,瞭解 EBR 的相關資訊
應用程式的綱要
為了安全起見,應用程式會使用下列五個綱要 (或使用者),每個綱要只具有其所需的權限。
-
app_data 擁有套件以外的所有綱要物件,並以範例綱要 HR 中表格的資料載入其表格
建立套裝程式的開發人員不會在此綱要中運作。因此,它們無法不小心更改或刪除應用程式綱要物件。
-
app_code 僅擁有套裝軟體 employees_pkg
employees_pkg 的開發人員在此綱要中工作。
-
app_admin 僅擁有套裝軟體 admin_pkg
admin_pkg 的開發人員在此綱要中工作。
-
典型的應用程式使用者 app_user 不擁有任何內容,而且只能執行 employees_pkg
中間層應用程式伺服器以 app_user 的身分連線至連線集區中的資料庫。例如,如果此綱要受到 SQL 資料隱碼錯誤的影響,則攻擊者只能查看和變更 employees_pkg 子程式的顯示和變更。攻擊者無法刪除表格、呈報權限、建立或更改綱要物件或其他項目。
-
應用程式管理員 app_admin_user 沒有擁有任何內容,只能執行 admin_pkg 和 employees_pkg
此綱要的連線集區非常小,只有授權的使用者才能存取它。如果此綱要受到危害,攻擊者只能查看和變更 admin_pkg 和 employees_pkg 子程式讓它看到和變更。
假設應用程式只有一個綱要,而非 app_user 和 app_admin_user,此綱要不做任何事,且可同時執行 employees_pkg 和 admin_pkg。對一般使用者和應用程式管理員而言,此綱要的連線集區必須夠大。如果 employees_pkg 中發生 SQL 隱碼錯誤,則利用該錯誤的一般使用者可以存取 admin_pkg。
假設應用程式只有一個擁有所有綱要物件 (包括套裝程式) 的綱要,而不是 app_data、app_code 和 app_admin。套裝程式接著會擁有表格的所有權限,這將會是不必要和不希望的。
例如,假設您有一個審核追蹤表 AUDIT_TRAIL。您希望 employees_pkg 的開發人員能夠寫入 AUDIT_TRAIL,但無法讀取或變更。您希望 admin_pkg 的開發人員能夠讀取 AUDIT_TRAIL 並寫入該檔案,但無法對其進行變更。如果 AUDIT_TRAIL、Employee_pkg 以及 admin_pkg 屬於相同的綱要,則兩個套裝程式的開發人員將擁有 AUDIT_TRAIL 的所有權限。不過,如果 AUDIT_TRAIL 屬於 app_data,employee_pkg 屬於 app_code,admin_pkg 屬於 app_admin,則您可以用 app_data 身分連線至資料庫,並執行此操作:
GRANT INSERT ON AUDIT_TRAIL TO app_code;
GRANT INSERT, SELECT ON AUDIT_TRAIL TO app_admin;
另請參閱:
-
關於 Oracle Database ,瞭解綱要的相關資訊
-
「關於範例綱要 HR 」,瞭解範例綱要
HR的相關資訊 -
「建議的安全實務」
應用程式中的命名慣例
應用程式會使用這些命名慣例。
| 項目 | 名稱 |
|---|---|
| 表格 | 表格號碼 |
| 表格編號的版本檢視 | 表格 |
| 版本檢視表格觸發程式 | table _{a|b} 事件 [_fer] 其中:
|
| 表格 # 中的 PRIMARY KEY 限制條件 | 表格 _pk |
| table #. column 的 NOT NULL 限制條件 | table_column _not_null (註腳 1) |
| table #. column 上的 UNIQUE 限制條件 | table_column _unique (註腳 1) |
| table #. column 上的 CHECK 限制條件 | table_column _check (註腳 1) |
| table1 #. column 到 table2 #. column 上的 REF 限制條件 | table1_to_ table2 _fk (註腳 1) |
| table1 #. column1 與 table2 #. column2 上的 REF 限制條件 | table1_col1 to table2_col2 _fk (註腳 1) (註腳 2) |
| 表格號碼的順序 | 表格順序 |
| 參數名稱 | 名稱 (_N) |
| 區域變數名稱 | l_ 名稱 |
註腳 1:table 、 table1 以及 table2 縮寫為員工的 emp、部門以及 job_history 的 job_hist。
註腳 2:col1 與 col2 是資料欄名稱 column1 與 column2 的縮寫。限制名稱不得超過 30 個字元。