黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

pk+uk+fk+index

系統(tǒng) 2065 0

1.pk
數(shù)據(jù)庫表分為實體表和關(guān)系表。
實體表是用來描述在domain(領(lǐng)域模型)里確實存在的實體(人、財、物、時間、空間)及實體元素發(fā)生的活動(轉(zhuǎn)移)。實體表的pk一般由系統(tǒng)自動生成(SYS_GUID()和sequence)。
關(guān)系表是用來描述兩張實體表之間的多對多關(guān)系,關(guān)系表的pk一般是兩張實體表pk的聯(lián)合,此pk同時具有uk的功能,所以關(guān)系表不用再建uk。

--查詢pk缺失的表
select table_name from user_tables t where? not exists (select 1 from user_indexes i where i.table_name=t.table_name and uniqueness='UNIQUE' and index_name like '%PK%');
--創(chuàng)建pk
alter table yj_dcjxdy add constraint pk_yj_dcjxdy primary key (id);

2.uk
重復記錄的發(fā)生:在數(shù)據(jù)庫設(shè)計之初就考慮給每張表建UK,一般是不會出現(xiàn)重復記錄的情況,重復記錄的發(fā)生主要是因為uk缺失導致的。
uk在后期的調(diào)整大多是增加屬性,此時不會出現(xiàn)重復記錄的情況;當uk的調(diào)整是減少屬性是,可能出現(xiàn)重復記錄。

--查詢uk缺失的表
select table_name from user_tables t where? not exists (select 1 from user_indexes i where i.table_name=t.table_name and uniqueness='UNIQUE' and index_name like 'UK_%');
--刪除重復記錄
delete from yj_dcjxdy e where e.rowid > (select min(x.rowid) from yj_dcjxdy x where x.dcgid = e.dcgid);
--創(chuàng)建uk
create unique index UK_yj_dcjxdy on yj_dcjxdy (dcgid);

3.fk+index
fk是用來描述兩張實體表之間的一對多關(guān)系(兩張實體表之間一般不存在一對一的關(guān)系,如果有一對一的兩張實體表,完全可以合并成一張實體表)。
fk與pk的區(qū)別在于,oracle自動給pk建索引,但默認不給fk建索引。
fk不建索引的后果是:在多表級聯(lián)查詢時,沒有索引,將觸發(fā)全表掃描,在數(shù)據(jù)量大的情況下,會慢的一塌糊涂。

--查詢fk沒有建index的情況
select table_name, constraint_name,
cname1 || nvl2(cname2,','||cname2,null) ||nvl2(cname3,','||cname3,null) || nvl2(cname4,','||cname4,null) ||nvl2(cname5,','||cname5,null) || nvl2(cname6,','||cname6,null) ||nvl2(cname7,','||cname7,null) || nvl2(cname8,','||cname8,null) columns
from (select b.table_name, b.constraint_name, max(decode( position, 1, column_name, null )) cname1, max(decode( position, 2, column_name, null )) cname2,
??max(decode( position, 3, column_name, null )) cname3, max(decode( position, 4, column_name, null )) cname4, max(decode( position, 5, column_name, null )) cname5, max(decode( position, 6, column_name, null )) cname6,
??max(decode( position, 7, column_name, null )) cname7, max(decode( position, 8, column_name, null )) cname8, count(*) col_cnt
? from (select substr(table_name,1,30) table_name,substr(constraint_name,1,30) constraint_name,substr(column_name,1,30) column_name,position from user_cons_columns ) a,
?????? user_constraints b
? where a.constraint_name = b.constraint_name and b.constraint_type = 'R' group by b.table_name, b.constraint_name
????? ) cons
?where col_cnt > ALL
? (select count(*)
? from user_ind_columns i
? where i.table_name = cons.table_name and i.column_name in (cname1, cname2, cname3, cname4, cname5, cname6, cname7, cname8 )
?? and i.column_position <= cons.col_cnt
?? group by i.index_name
? ) order by table_name;

--創(chuàng)建index
create index idx_xt_yh_szbm on xt_yh (szbm);

4.引用
select * from user_constraints???????????????????????????? 約束表
select * from user_cons_columns??????????????????????????? 約束引用列表?? position 列在約束中的位置
select * from user_indexes order by uniqueness,index_name? 索引表
select * from user_ind_columns???????????????????????????? 索引引用列表?? column_position 列在索引中的位置
select * from user_tables order by table_name????????????? 物理表
select * from user_segments??????????????????????? 物理表和索引表
segment是指可增長的對象,如:表、索引;
其余的像 procedure、package、package body、type、type body、function、trigger都是不可增加對象,
按行存貯在source$的source varchar2(4000)屬性中(即每行不能超多4000字節(jié));
其中trigger還有另外一個限制,trigger的名稱存放在obj$.name中;
trigger的內(nèi)容作為匿名塊存放在trigger$.action#(long類型 32MB 32760B)中,
即trigger的長度不能超過32760B。

pk+uk+fk+index


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論