自定義資料庫解決方案

2022-08-27 04:06:07 字數 1822 閱讀 8122

1、只新增表

定義個乙個模板表,只要新建乙個表就用這個模板表建立,表列如下:

datatable

id int 主鍵

rowid int 記錄序號,每條業務資料記錄等於rowid相同的資料庫記錄拼接

columnid guid 避免列名重複,也減少了維護的工作。

columnvalue string 盡量大一些,可以儲存大資料量的字段。

relationtable string 對於字典資料,此列為關聯的字典表的名稱,否則為空

columntable

columnid guid 唯一的列標識

columnname string 列的名稱,這部分由客戶輸入

columntype string 列型別,比如字串或者數字等,根據使用者選擇的資料型別儲存

tableid int 列所屬的table

userdictionarytable 使用者使用的字典,字典的名稱由使用者輸入

did int 字典主鍵

dvalue string 字典值

dictionary 系統字典,使用者存放字典表的名稱以及其它字典資訊

did int 字典主鍵

dvalue string 字典值

dtype string 字典類別

這種方式減少了資料庫的工作量,但是會增加業務邏輯,更多的資料型別判斷和業務資料還原都在**中實現,才外這種設計還會增加資料庫的儲存量,浪費大量的儲存空間。

2、表列都新增

使用sql語句建立每一條資料庫實體,相當於sqlserver management studio提供的資料庫物件維護功能。

1 > 建立列

alter table table_name

add column_name datatype

2> 更新列

alter table table_name

alter column column_name datatype

3> 刪除列

alter table table_name

drop column column_name

此外對於列名需要乙個專門的表維護中英文的關係,不過列名可以採用guid格式的字串,減少重名判斷的工作。

對於字典資料的邏輯判斷,還是需要在業務邏輯中做處理

該設計的缺陷:頻繁的更新資料庫的結構在資料庫執行未完成而停止服務等情況下會造成資料庫結構混亂,業務清除比較複雜(表物件和列物件要儲存到資料庫表中的)。

另一種可能是併發操作,同時多人對乙個表操作後也會破壞表結構。

資料展現語句

只新增表

declare @sql varchar

(8000)

set @sql =

'select rowid '

select @sql = @sql +

',sum(case columnid when '''

+ columnid

+''' then columnvalue end) ['

+ columnid +

']'from

(select

distinct columnid from datatable)

as a

select @sql = @sql +

' from datatable group by columnid'

exec

(@sql)

取資料的時候主鍵為

columnid

和rowid

2、表列都新增

select

*from datatable

取資料的時候主鍵為

rowid

GO 自定義包引用解決方案

以下說的話不包括所有人哈!只是針對那些自以為是的 大佬們 其實針對這個功能真的很簡單,只是對於新手來說真的很不容易 咔咔是在2020年4月5號晚上在乙個群裡看到乙個programmer被人嘲笑 其實我們每個做程式設計的都是從新手開始的,然後一步一步的熟練自己對程式設計的認知 但是對於新手問的問題,在...

資料庫亂碼解決方案

oracle 資料庫亂碼解決方案 你插入資料的時候,用 轉變字串的亂碼函式 param str return public string getstr string str catch exception e 向bean裡面賦值 public void setaction string action...

資料庫死鎖解決方案

一 活鎖 如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又批准了t4的請求,t2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是採用先來先服務...