數(shù)據(jù)庫可以分三個層次
- Physical:就是儲存在磁盤上的數(shù)據(jù)
- Conceptual:對磁盤上的數(shù)據(jù)抽象成我們定義的一個個 Relation
- Logical:進一步抽象,View
View 的存在能讓一些查詢變得更加簡單自然,而且提供了一種對數(shù)據(jù)庫操作進行模塊化的方法
因此現(xiàn)實中的應(yīng)用使用了大量的 View
view 只是邏輯上的概念裂明,并不真實存在吴汪。對 view 進行查詢操作,會根據(jù) view 的定義從定義它的 relation(可能也是view)中進行操作(這是一個遞歸過程)
ps:感覺 view 更像程序語言中的變量用作對 query 的一部分進行命名
create view CSaccept AS
SELECT sID, cName
FROM Apply
WHERE major = 'CS' AND decision = 'Y';
SELECT Student.sID, sName, GPA
FROM Student, CSaccept
WHERE Student.sID = CSaccept.sID AND cName = 'Stanford' AND GPA < 3.8
-- 等效為如下查詢
SELECT Student.sID, sName, GPA
FROM Student, Apply
WHERE major = 'CS' AND decision = 'Y' AND
Student.sID = Apply.sID AND cName = 'Stanford' AND GPA < 3.8
-- 可以根據(jù) view 創(chuàng)建 view
create view CSberk AS
SELECT Student.sID, sName, GPA
FROM Student, CSaccept
WHERE Student.sID = Csaccept.sID AND cName = 'Berkeley'
-- 更加體現(xiàn)了 view 的好處
create view Mega AS
SELECT College.cName, state, enrollment, Student.sID,
sName, GPA, sizeHS, major, decision
FROM College, Student, Apply
WHERE College.cName = Apply.cName AND Student.sID = Apply.sID
Modify View
待補充