[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程式設計資料結構
- 程式設計師必須掌握的資料結構 2程式設計師資料結構
- 剖析JS和Redis的資料結構設計:陣列JSRedis資料結構陣列
- 程式設計師必須掌握的資料結構 1程式設計師資料結構
- SAP Commerce Cloud Spartacus UI 的 ActionClass 資料結構設計CloudUI資料結構
- [20190930]關於資料結構設計問題.txt資料結構
- 競拍系統設計和核心資料結構資料結構
- 資料結構,雜湊表hash設計實驗資料結構
- Java程式設計生涯你必須要了解的資料結構Java程式設計資料結構
- 資料結構而非演算法是程式設計的核心 - theartofmachinery資料結構演算法程式設計Mac
- 程式設計師內功修煉之資料結構程式設計師資料結構
- 資料結構課程設計報告——暢通工程資料結構
- .NET併發程式設計-資料結構不可變性程式設計資料結構
- 資料結構之計數排序資料結構排序
- 為什麼我害怕資料結構學得好的程式設計師?資料結構程式設計師
- 架構師日記-從資料庫發展歷程到資料結構設計探析架構資料庫資料結構
- 資料庫設計總結資料庫
- 結構化資料、半結構化資料和非結構化資料
- 《Redis設計與實現》筆記 -- 資料結構與物件Redis筆記資料結構物件
- 【web】資料庫應用系統設計體系結構Web資料庫
- 結構化資料儲存,如何設計才能滿足需求?
- RecyclerView的基本設計結構View
- 【資料結構篇】認識資料結構資料結構
- Redis設計與實現閱讀總結(一)資料結構和物件Redis資料結構物件
- 資料脫敏大資料架構設計大資料架構
- 【C++ 資料結構:連結串列】二刷LeetCode707設計連結串列C++資料結構LeetCode
- 中級JAVA程式設計師應該掌握的資料結構知識Java程式設計師資料結構
- C++資料結構和pb資料結構的轉換C++資料結構
- 結構化資料與非結構化資料的差異
- 設計randompool結構random
- c++11併發程式設計歷程(15):併發設計以及併發設計資料結構的思考C++程式設計資料結構
- 架構設計之資料分片架構
- redis的資料結構Redis資料結構