[20180312]不好的資料結構設計3.txt
[20180312]不好的資料結構設計3.txt
--//上個星期提到一種不好的資料結構設計.今天在提到一種:
--//就是本來一行儲存的資訊,變成豎著儲存,涉及一些安全資訊,透過例子來說明:
1.環境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.例子:
SCOTT@book> @ &r/desc emp
Name Null? Type
---------- -------- ----------------------------
1 EMPNO NOT NULL NUMBER(4)
2 ENAME VARCHAR2(10)
3 JOB VARCHAR2(9)
4 MGR NUMBER(4)
5 HIREDATE DATE
6 SAL NUMBER(7,2)
7 COMM NUMBER(7,2)
8 DEPTNO NUMBER(2)
--//使用UNPIVOT
SELECT empno, column_name, VALUE
FROM emp t UNPIVOT (VALUE FOR COLUMN_NAME IN (ename, job, TO_CHAR(mgr) ))
where empno=7369;
*
ERROR at line 2:
ORA-00917: missing comma
--//報錯,因為型別不一致.
WITH a
AS (SELECT EMPNO
,ENAME
,JOB
,TO_CHAR (MGR) mgr
,TO_CHAR (HIREDATE, 'yyyy-mm-dd hh24:mi:ss') hiredate
,TO_CHAR (SAL) sal
,TO_CHAR (COMM) comm
,TO_CHAR (DEPTNO) deptno
FROM emp
WHERE empno = 7369)
SELECT empno, column_name, VALUE
FROM a t UNPIVOT (VALUE
FOR COLUMN_NAME
IN (ename, job, Mgr, hiredate, sal, comm, deptno));
EMPNO COLUMN_NAME VALUE
----- ----------- -------------------
7369 ENAME SMITH
7369 JOB CLERK
7369 MGR 7902
7369 HIREDATE 1980-12-17 00:00:00
7369 SAL 800
7369 DEPTNO 20
6 rows selected.
--//資訊按照以上顯示格式來儲存,真不知道開發如何思考,這樣設計將原來多表的資料變成1個表.
--//還導致另外一個問題,就是value只能選擇字元型別來統一儲存.
--//得到的所謂好處就是欄位可以無限增加...
--//這樣還導致的結果如何統計分析,哎,圍繞這樣表結構如何查詢比如deptno=10,sal>=1000的那些記錄.
--//我曾經在itpub問過這樣表結構設計,才想起來在tom的<Oracle高效設計>書中提到這樣的設計.
--//討論連結:http://www.itpub.net/thread-1849887-1-1.html
--//這種設計叫EAV(Entity–attribute–value model).在連結
--//.
--//總之這種設計有許多限制,不能亂用.至少我沒看到這樣設計的先進性.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2151736/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180309]不好的資料結構設計.txt資料結構
- 理解 Golang 的 map 資料結構設計Golang資料結構
- 複雜的資料結構設計求解?資料結構
- 軟體設計師:資料結構資料結構
- JavaScript資料結構之連結串列--設計JavaScript資料結構
- Java 程式設計技巧之資料結構Java程式設計資料結構
- CoreData實踐(二)——設計資料結構資料結構
- 剖析JS和Redis的資料結構設計:陣列JSRedis資料結構陣列
- 程式設計師必須掌握的資料結構 1程式設計師資料結構
- 程式設計師必須掌握的資料結構 2程式設計師資料結構
- Redis 設計與實現 (一)--資料結構Redis資料結構
- 資料模型設計(表結構)之隨記模型
- 資料訪問層基礎結構設計
- 資料結構,雜湊表hash設計實驗資料結構
- 競拍系統設計和核心資料結構資料結構
- 資料結構課程設計-宿舍管理系統資料結構
- 程式碼效能——盤點資料結構設計方案資料結構
- 資料結構而非演算法是程式設計的核心 - theartofmachinery資料結構演算法程式設計Mac
- SAP Commerce Cloud Spartacus UI 的 ActionClass 資料結構設計CloudUI資料結構
- Java程式設計生涯你必須要了解的資料結構Java程式設計資料結構
- 關係型資料庫表結構的兩個設計技巧資料庫
- 使用者登陸驗證資訊的資料結構設計資料結構
- 資料結構課程設計報告——暢通工程資料結構
- 程式設計師內功修煉之資料結構程式設計師資料結構
- .NET併發程式設計-資料結構不可變性程式設計資料結構
- 大資料計算:結構化大資料計算的理想模式大資料模式
- 資料結構之計數排序資料結構排序
- 結構化資料、半結構化資料和非結構化資料
- 資料庫設計---即資料庫架構設計的幾個步驟資料庫架構
- 架構師日記-從資料庫發展歷程到資料結構設計探析架構資料庫資料結構
- 為什麼我害怕資料結構學得好的程式設計師?資料結構程式設計師
- 為實現最佳效能的程式設計:資料對齊與結構程式設計
- 資料庫設計總結資料庫
- 愛喝啤酒的程式設計師是如何學習資料結構的程式設計師資料結構
- 【資料結構篇】認識資料結構資料結構
- 多層結構下分散式資料庫資料容災概要性設計分散式資料庫
- 結構化資料儲存,如何設計才能滿足需求?
- 《Redis設計與實現》筆記 -- 資料結構與物件Redis筆記資料結構物件