多級代碼數(shù)據(jù)字典表設計
1. 要求:
- 編碼長度改變:如一級學科變成3位
- 編碼方式改變:增加4級學科、將門類與一級學科合并
- 代碼有效期改變:如某個二級學科從2010年10月1日開始不在使用
- 代碼被覆蓋或替換
- 要求保留原信息
2. 設計表如下:
- 學科門類表
字段名 | 數(shù)據(jù)類型 | 允許空值 | 主/外鍵 | 描述 |
---|---|---|---|---|
id | varchar(20) | not null | PK | 學科門類代號 |
name | varchar(50) | not null | 學科門類名稱 | |
startDate | date | not null | 該學科生效時間 | |
endDate | date | 該學科失效時間 |
- 各級學科表
字段名 | 數(shù)據(jù)類型 | 允許空值 | 主/外鍵 | 描述 |
---|---|---|---|---|
id | varchar(20) | not null | PK | 學科門類代號 |
name | varchar(50) | not null | 學科門類名稱 | |
level | int | not null | 學科層次:1恨溜、2、3 | |
fatherID | varchar(20) | not null | FK | 上級學科表 |
startDate | date | not null | 該學科生效時間 | |
endDate | date | 該學科失效時間 |
3. 圖示:
學科字典.png
4. 分析
- 編碼長度改變:如一級學科變成3位奈辰,各級學科的id均為varchar(20)栏妖,滿足長度改變要求乱豆,另外在改變該學科的編碼長度時,應該遞歸的改變所有子學科的編碼吊趾。即如08變?yōu)?08宛裕,那么0811、0812论泛、0813均要變?yōu)?0811揩尸、10812、10813
- 編碼方式改變:如增加4級學科屁奏、將門類與一級學科合并岩榆,對于增加學科只須增加對應層次的學科表即可,即可創(chuàng)建一個level為4的學科坟瓢。
- 代碼有效期改變:如某個二級學科從2010年10月1日開始不在使用勇边,只須在endDate添加結束日期即可。
- 代碼被覆蓋或替換:類似與1中長度改變折联,遞歸改變學科及其子學科的id粒褒。
- 要求保留原信息:對于刪除部分學科,只須添加結束日期即表示已經過期不再訪問诚镰,但原始信息仍保留在系統(tǒng)中奕坟。