sql創建架構
分區表, 可能可以解決一部分問題.
也就是 按 超市的編號 進行分區管理.
這樣, 假設有500家超市,每家超市有1萬種商品的話
ShopProct表 有 500 個分區, 每個分區 1萬種商品.
每個超市,檢索其 自己的數據的時候, 肯定要 傳入 超市編號 這個欄位的.
當資料庫分析 SQL 語句的時候,會分析要, 對於這個 指定的超市的編號, 我需要去哪一個分區去檢索。 知道去哪一個分區去檢索的話, 范圍就被局限在 這 1萬種商品范圍內。 不會去查詢其他超市的數據。
缺點也有一點, 就是每新建一個超市, 要在資料庫上面創建一個新的分區。
還有就是,假如你不傳遞任何 超市的條件, 僅僅通過 商品的編號 去查詢這個商品, 在各個超市的 售價, 那麼,查詢性能可能會比較低。
Ⅱ sqlserver 如何建架構
在對象資源管理器張開你要新建架構的資料庫在-安全性-架構-右擊新建
Ⅲ sql server 2005 添加架構 需要什麼許可權
架構的作用與示例
用戶與架構(schema)分開,讓資料庫內各對象不再綁在某個用戶賬號上,可以解決SQL SERVER 2000及以前版本中「用戶離開公司"問題,也就是在擁有該對象的用戶離開公司,或離開該職務時,不必要大費周章地更改該用戶所有的對象屬於新的用戶所有。另外,也可讓 DBA 在安裝某個套裝軟體時,設置該套裝軟體所用的資料庫對象都屬於某個特定的架構,容易區別。也就是說,在單一資料庫內,不同部門或目的的對象,可以通過架構區分不同的對象命名原則與許可權。
在 SQL Server 2005 /2008中,架構獨立於創建它們的資料庫用戶而存在。可以在不更改架構名稱的情況下轉讓架構的所有權。並且可以在架構中創建具有用戶友好名稱的對象,明確指示對象的功能。例如,除了 cus.app.entry.customEntry 外,您還可以創建名為 cus.app.manifest.customEntry 的架構。因為「manifest」不是用戶,所以從資料庫中刪除用戶後,無需更改此名稱。這就簡化了資料庫管理員和開發人員的工作。
SQL Server 2005/2008 還引入了「默認架構」的概念,用於解析未使用其完全限定名稱引用的對象的名稱。在 SQL Server 2000 中,首先檢查的是調用資料庫用戶所擁有的架構,然後是 DBO 擁有的架構。在 SQL Server 2005 /2008中,每個用戶都有一個默認架構,用於指定伺服器在解析對象的名稱時將要搜索的第一個架構。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 選項設置和更改默認架構。如果未定義 DEFAULT_SCHEMA,則資料庫用戶將把 DBO 作為其默認架構。
下面的顯示SQL Server許可權層次結構的圖可能會給我們一個直觀的認識:
SQL Server 2005/2008 Database Engine 管理著可以通過許可權進行保護的實體的分層集合。這些實體稱為「安全對象」。在安全對象中,最突出的是伺服器和資料庫,但可以在更細的級別上設置離散許可權。SQL Server 通過驗證主體是否已獲得適當的許可權來控制主體對安全對象執行的操作。
安全對象關系如下圖:
下面舉個具體的示例來說明以一下架構的作用。
--命令對架構進行操作
use master
go
setuser
go
--創建測試資料庫
create database schTest
go
create login df with password='sj1234',default_database=schTest
create login xhl with password='sj1245',default_database=schTest
go
use schTest
go
-- 創建兩個用戶時沒有指定屬於哪個架構
create user df for login df
create user xhl for login xhl
-- 這個表沒指定屬於哪個架構屬於默認DBO 架構
go
create table tb1 (姓名 varchar(8),性別 char(2))
go
--這個表就屬於sch架構
create schema sch
go
create table sch.tb2(姓名 varchar(8),性別 char(2),年齡 int)
go
-- 賦予schTest這個用戶查詢sche架構中的對象的許可權.
grant select on schema::sch to df
go
setuser 'df' --切換用戶df
select * from tb2
-- 此時報告"對象名無效" 是因為沒有指定tb2的架構,系統默認為dbo,而我們的tb2屬於sch架構.
--帶上架構名稱,就可以查詢了
go
select * from sch.tb2
go
setuser -- 切換到sa
---切換到xhl
setuser 'xhl'
--不能查詢,是因為沒有許可權
select * from sch.tb2
go
setuser --切換sa
--給df用戶賦默認架構
alter user df with default_schema=sch
go
setuser 'df' --切換df
-- 此時不需要指定sch 也可以了,如果架構中還有其他對象,也可以查詢
select * from tb2
go
setuser --切換sa
--創建第三張測試表,同樣的是sch架構下
create table sch.tb3 (id int,uname varchar(8))
go
--切換用戶df
setuser 'df'
---可以進行查詢
select * from tb3
go
---但是無法進行數據插入,因為沒有插入許可權
insert into tb3 values (1,'abcde') --拒絕了insert許可權
go
setuser
--賦插入許可權
grant insert on schema::sch to df
--切換用戶df
setuser 'df'
go
---可以進行數據插入
insert into tb3 values (1,'abcde') --OK!
---查詢結果
select * from tb3
GO
Grant alter on schema::sch to df -- 使schTest 這個用戶對所有的架構都有可更改的能力。
--錯誤
--無法對sa、dbo、實體所有者、information_schema、sys 或您自己授予、拒絕或撤消許可權。
GO
Use master
go
Grant control server to df -- 使schTest這個用戶能夠控制伺服器。
--錯誤
--無法對sa、dbo、實體所有者、information_schema、sys 或您自己授予、拒絕或撤消許可權。
setuser
go
use schtest
go
--創建架構sch1
create schema sch1
go
-- 修改對象的架構tb2表的架構由sch 轉移到sch1
alter schema sch1 transfer sch.tb2
go
--創建一個新用戶,同時指定默認schema,默認屬於DBO
create login yhy with password='sj1234',default_database=master
GO
use schTest
GO
create user yhy for login yhy with default_schema=sch --屬於sch
--切換用戶yhy
setuser 'yhy'
--查詢表,對象名'tb2' 無效。
select * from tb2
go
setuser
--賦架構許可權
grant select on schema::sch1 to yhy
--切換用戶yhy
setuser 'yhy'
go
select * from tb2 ---還是無效,因為不在同一個schema
go
setuser
go
alter user yhy with default_schema=sch1 --更改yhy的默認架構
GO
--由於yhy不是當前用戶,所以無法進行查詢
select * from tb2
--顯示當前用戶
GO
select user
GO
--切換用戶yhy
setuser 'yhy'
-- 此時就可以進行查詢了,如果架構中還有其他對象,也可以查詢
go
select * from tb2
--顯示當前用戶
select user
go
--切換用戶
Setuser
--切換用戶為df
setuser 'df'
-- 此時由於tb2的架構由sch變為了sch1,所以df就不可以查詢tb2了
go
--查詢報錯
select * from tb2
--顯示當前用戶
select user
go
setuser
go
use master
go
---刪除用戶
drop user df
drop user xhl
drop user yhy
---刪除登錄名
drop login df
drop login yhy
drop login xhl
--刪除資料庫
drop database schTest
Ⅳ SQL中創建視圖時邦定到架構是何意
綁定到架構以後,視圖所「引用」的表和視圖就不能進行刪除或特定的修改,特定的修改是指可能會導致視圖執行失敗的修改,比如視圖中取A表的B欄位的數據,當嘗試alter
table
A
drop
column
B去除去B
欄位時,操作會失敗。
Ⅳ 在SQL中,如何給角色添加架構
SQL Server 中伺服器角色是不能添加架構的,只有資料庫角色等才可以!直接右鍵角色,選擇 屬性 就可以!
Ⅵ SQL 的架構是什麼意思
架構(Schema)是一組資料庫對象的集合,它被單個負責人(可以是用戶或角色)所擁有並構成唯一命名空間。你可以將架構看成是對象的容器。
在 SQL Server 2000 中,用戶(User)和架構是隱含關聯的,即每個用戶擁有與其同名的架構。因此要刪除一個用戶,必須先刪除或修改這個用戶所擁有的所有資料庫對象。
在 SQL Server 2005 中,架構和創建它的資料庫用戶不再關聯,完全限定名(fully-qualified name)現在包含4個部分:server.database.schema.object
1. 體系結構(Architecture)
體系結構亦可稱為架構,所謂軟體架構,根據Perry 和Wolfe之定義:Software Architecture = {Elements,Forms, Rationale / Constraint },也就是軟體主架構 = {組件元素,元素互助合作之模式,基礎要求與限制}。Philippe Kruchten採用上面的定義,並說明主架構之設計就是:將各組件元素以某些理想的合作模式組織起來,以達成系統的基本功能和限制。體系結構又分為多種樣式,如Pipes and Filters等。
2. 框架(Framework)
框架亦可稱為應用架構,框架的一般定義就是:在特定領域基於體系結構的可重用的設計。也可以認為框架是體系結構在特定領域下的應用。框架比較出名的例子就是MVC。
3. 庫(Library)
庫應該是可重用的、相互協作的資源的集合,供開發人員進行重復調用。它與框架的主要區別在於運行時與程序的調用關系。庫是被程序調用,而框架則調用程序。比較好的庫有JDK。
4. 設計模式(Design Pattern)
設計模式大家應該很熟悉,尤其四人幫所寫的書更是家喻戶曉。「四人幫」將模式描述為「在一定的環境中解決某一問題的方案」。這三個事物 — 問題、解決方案和環境 — 是模式的基本要素。給模式一個名稱,考慮使用模式將產生的結果和提供一個或多個示例,對於說明模式也都是有用的。
5. 平台(PlatForm)
由多種系統構成,其中也可以包含硬體部分。
對於以上的概念有一個比較清楚的認識之後,就可以在軟體的開發過程中進行應用。理論和實踐是缺一不可的,相輔相成的。沒有理論的指導,實踐就缺乏基礎;沒有實踐的證明,理論就缺乏依據,因此我一直認為:對於當代的程序員,在有一定的實踐基礎後,必須學習更深的理論知識。無論你是從那方面先開始學習的。
在軟體的開發過程中,從許多過程實踐和方法中,大致可以提煉出五大步驟:需求、分析、設計、編碼、測試。而體系結構是軟體的骨架,是最重要的基礎。體系結構是涉及到每一步驟中。一般在獲取需要的同時,就應該開始分析軟體的體系結構。體系結構現在一般是各個大的功能模塊組合成,然後描述各個部分的關系。
我一般認為框架是體系結構中每個模塊中更細小的結構。如需要表示web技術,就會用到MVC框架,而web功能只是整個軟體體系中的一個功能模塊。每個框架可以有許多個實例,如用java實現的MVC框架structs。
而在框架之下就是設計模式,設計模式一般是應用中框架之中的,也可以說是對框架的補充。因為框架只是提供了一個環境,需要我們我裡面填入更多的東西。無論是否應用了設計模式,你都可以實現軟體的功能,而正確應用了設計模式,是我們對前人軟體的設計或實現方法的一種繼承,從而讓你的軟體更軟。
體系結構是可以從不同視角來進行分析的,所以軟體體系結構的設計可以按照不同的視角來進行的。按4+1 views的論述,那是四種views:邏輯、開發、過程、物理和場景。因此體系結構是逐漸細化的,你不可能開始就拿出一個完美的體系結構,而只能根據開發過程逐漸對體系結構進行細化。
打個比方:如果我們准備建一個房子,那房子如果按功能來分:牆壁、地板、照明等,它是按那種樣式來組成的,房子是四方的還是圓形的等,這樣就組成了房子的體系結構。在體系結構之下,我們可以把框架應用在每個模塊中,例如牆壁,我們准備應用什麼框架。牆壁可以包括:窗戶、門等。窗戶和門的組成的就是一種框架。而窗戶是什麼形狀的或者是大還是小,是要為了實現屋內的亮度的,因此挑選什麼樣的窗戶就是設計模式。
Ⅶ sql server中的架構是什麼意思
在sqlserver 2005中,可能大家在工作或學習的時候會經常發現這樣一些問題,你使用一個賬戶在資料庫中創建了一張表,卻發現你自己創建的表卻沒有修改和查詢的許可權,這是一件很郁悶的事情,在sqlserver2000中卻不存在這樣的問題,那為什麼在2005中會出現這樣的事情,這樣的設置可以帶來哪些好處?其實導致這一問題的原因主要在於2005中多了一個新的概念—架構。
首先我們來看一下msdn中對架構的定義:架構(Schema)是形成單個命名空間的資料庫實體的集合。命名空間是一個集合,其中每個元素的名稱都是唯一的。在這里,我們可以將架構看成一個存放資料庫中對象的一個容器。
架構實際上在sqlserver2000中就已經存在,當我們使用查詢分析器去查詢一個表的時候,一個完整的表的名稱應該包括伺服器名.資料庫名.用戶名.對象名,而在sqlserver2005中一個表的完全限定名稱應該為伺服器名.資料庫名.架構名.對象名
在2000中,假如有一個賬戶tt在test資料庫中創建了一張表table1的時候,在伺服器上對查詢的語句應為select * from test.tt.table1,也就是說,在sqlserver 2000中一張表所屬的架構默認就是表的創建者的登錄名稱,用戶可以和修改他所創建的所有資料庫對象。但在2005中已經將用戶和其創建對象所屬架構的關聯取消了,而加入了一個全新的架構體系,這樣做的優點主要在於下面幾個方面:
1. 多個用戶可以通過角色(role)或組(Windows groups)成員關系擁有同一個架構。
2. 刪除資料庫用戶變得極為簡單。
3. 共享預設架構使得開發人員可以為特定的應用程序創建特定的架構來存放對象,這比僅使用管理員架構(DBO schema)要好。
4. 在架構和架構所包含的對象上設置許可權(permissions)比以前的版本擁有更高的可管理性。
5. 區分不同業務處理需要的對象,例如,我們可以把公共的表設置成pub的架構,把銷售相關的設置為sales,這樣管理和訪問起來更容易.
Ⅷ sql server 2012中怎麼對視圖架構綁定創建
打開sql server management studio,依次展開到視圖
右鍵點擊,選擇新建視圖
選中建立圖片需要的表,然後點擊添加(可以添加多個)
添加完後,點擊關閉
點擊表中的復選框,來添加一些列,在最下面的框中會自動生成相應
也可以在下面的代碼框中直接輸入一些代碼
點擊空白處,並使用快捷鍵Ctrl+S進行保存
創建視圖成功