通用基礎表邏輯設計(一) 配置 列舉和類別

2022-04-06 04:14:39 字數 2610 閱讀 3900

一、配置表

乙個系統中往往有很多需要可自定義的引數,比如**名稱、聯絡位址等基礎引數以及各種系統執行引數等等,這個時候就需要單獨乙個引數配置表來儲存這些引數。可能最先想到的就是乙個引數加乙個字段,但引數的個數不一定是固定的,如此設計需要修改資料庫、修改程式,可擴充套件性不夠。所以可以把這種列設計轉換為行設計,引數增減通過資料行的增減來實現。

欄位名稱

資料型別

屬性允許空

預設值備註

cfg_id

int (4)

pk    ai

配置編號

cfg_guid

char (36)

(newid())

配置guid

cfg_parent_guid

varchar (36)

('')

上級配置guid,可以通過該欄位實現配置分組且不限層級

cfg_code

nvarchar (100)

('')

配置編碼

cfg_name

nvarchar (100)

('')

配置名稱

cfg_desc

nvarchar (200)

('')

配置描述

cfg_value_type

varchar (50)

('')

配置值型別,比如integer(整數)、html(html)等bool(是否),不同的值型別可以通過不同的表單來顯示和編輯

cfg_value

nvarchar (1000)

('')

配置值cfg_state

int (4)

(1)配置狀態(-1:已刪除;0:禁用;1:啟用)

表1:base_config(配置表)

二、列舉表

很多時候,系統中都需要編碼-名稱對應的字典列舉表以記錄各種編碼代表什麼含義,比如訂單狀態的編碼和意義、商家和商品型別的編碼和意義等等,此時我們就需要乙個專門的字典列舉表來儲存這些資訊。也可以這些資訊讀入快取直接獲取對應字段編碼的含義,從而減少表間連線。

欄位名稱

資料型別

屬性允許空

預設值備註

enum_id

int (4)

pk    ai

列舉編號

enum_guid

char (36)

(newid())

列舉guid

enum_parent_guid

varchar (36)

('')

上級列舉編號guid,可以通過該欄位實現列舉分組且不限層級

enum_code

varchar (50)

('')

列舉編碼

enum_value

int (4)

(0)列舉值

enum_name

nvarchar (100)

('')

列舉名稱

enum_desc

nvarchar (100)

('')

列舉描述

enum_state

int (4)

(1)列舉狀態(-1:已刪除;0:禁用;1:啟用)

表2:base_enum(列舉表)

三、類別表

另外,商家有類別(比如餐飲、娛樂等)、商品有類別(搶購、精選等),這些類別資訊同樣可以抽象整合到類別表。

欄位名稱

資料型別

屬性允許空

預設值備註

cat_id

bigint (8)

pk    ai

類別編號

cat_guid

char (36)

(newid())

類別guid

cat_parent_guid

varchar (36)

('')

上級類別guid,可以通過該欄位實現類別分組且不限層級

cat_name

nvarchar (100)

('')

類別名稱

cat_key

nvarchar (100)

('')

類別關鍵字

cat_desc

nvarchar (200)

('')

類別描述

cat_state

int (4)

(1)類別狀態(-1:已刪除;0:禁用;1:啟用)

cat_order

int (4)

(0)類別序號

cat_detail

nvarchar (-1)

('')

類別簡介

表3:base_category(類別表)

四、總結

現實中有各種不同的資料,把這些資料資訊化後,在資訊系統中可以抽象整合成各種型別的業務模型,最後具體化到資料庫的設計,由資料表等物件來體現。分析問題解決問題的能力,就包括資料的收集、歸納、分析和綜合,在形成具體資料表的設計時,應考慮到當下既定的事實和未來可能的變化,通過可擴充套件、可定製的設計來應對變化頻繁的現實需求。

通用基礎表邏輯設計(二) 擴充套件字段

一 擴充套件字段表 乙個表的字段可能並非一成不變,系統的執行 需求的變化等客觀條件可能會需要增加其他字段,如何在不直接修改表設計的前提下滿足需求呢?該擴充套件字段表的思想就是將列設計轉化為行設計,欄位的增加表現為記錄的增加。當然這種方式也不是萬能的,對於需要排序 查詢和索引的字段最好還是通過新增表字...

Trafodion表物理設計與邏輯設計問答

1 問題 primary key 與 clustering key區別?解答 primary key是為了保證記錄唯一性而設計 特殊應用中不希望按照主鍵進行排序儲存,則需要指定clustering key 單獨指定聚簇鍵使用store by語句 區別 建立表的時候指定primary key,那麼cl...

數字邏輯設計基礎 事件 邊沿檢測

在數字邏輯設計中常常需要在邊沿或者訊號發生變化的時候做出相應的動作,因此,邊沿檢測就和重要。在其中 如果訊號來自於同乙個時鐘域,那就不需要進行同步化處理,如果訊號來自於不同的時鐘域,就要就行同步化處理之後再進行檢測 邊沿檢測主要分為 1 上公升沿檢測 2 下降沿就檢測 3 上公升 下降沿 雙邊 檢測...