Tại sao bạn tạo Chế độ xem trong cơ sở dữ liệu?


267

Khi nào và tại sao một người nào đó quyết định rằng họ cần tạo Chế độ xem trong cơ sở dữ liệu của họ? Tại sao không chỉ chạy một thủ tục lưu trữ bình thường hoặc chọn?


Kiểm tra câu trả lời của tôi cho một câu hỏi tương tự, hy vọng nó sẽ giúp!
Loukan ElKadi

Câu trả lời:


464

Một quan điểm cung cấp một số lợi ích.

1. Lượt xem có thể che giấu sự phức tạp

Nếu bạn có một truy vấn yêu cầu tham gia một số bảng hoặc có logic hoặc tính toán phức tạp, bạn có thể mã hóa tất cả logic đó vào dạng xem, sau đó chọn từ dạng xem giống như bạn làm bảng.

2. Lượt xem có thể được sử dụng như một cơ chế bảo mật

Một khung nhìn có thể chọn các cột và / hoặc hàng nhất định từ một bảng (hoặc bảng) và các quyền được đặt trên dạng xem thay vì các bảng bên dưới. Điều này cho phép chỉ hiển thị dữ liệu mà người dùng cần xem.

3. Lượt xem có thể đơn giản hóa việc hỗ trợ mã kế thừa

Nếu bạn cần cấu trúc lại một bảng có thể phá vỡ nhiều mã, bạn có thể thay thế bảng bằng chế độ xem cùng tên. Khung nhìn cung cấp chính xác lược đồ giống như bảng gốc, trong khi lược đồ thực tế đã thay đổi. Điều này giữ cho mã kế thừa tham chiếu bảng không bị phá vỡ, cho phép bạn thay đổi mã kế thừa tùy ý.

Đây chỉ là một số trong nhiều ví dụ về cách các khung nhìn có thể hữu ích.


84
mục 3 là một lý do mà dường như không ai khác đã chỉ ra
MedicineMan

2
Tôi nghĩ rằng điểm 3 là khoảng cách dừng nhiều hơn bất cứ điều gì khác. Cuối cùng, khi bạn nhận được vòng để cập nhật mã kế thừa, bạn sẽ không chỉ phải thay đổi mã phía sau chế độ xem mà còn tất cả các mã đã được xây dựng trên đầu của chế độ xem. 2cents của tôi
super9

3
3 Thực sự là tài sản mạnh mẽ nhất của lượt xem. Đó là những gì giúp cung cấp độc lập dữ liệu logic , thực tế là bạn có thể cung cấp giao diện cho DB độc lập với cơ sở dữ liệu logic cơ bản là một khái niệm rất mạnh mẽ.
Falaina

1
@ John này nợ kỹ thuật phát sinh phải trả sớm hay muộn không? Trong 10 năm, điều đó có thể không quan trọng đối với kỹ sư đã viết nó 10 năm trước nhưng nó quan trọng đối với công ty.
super9

Thay đổi DB chính của bạn và mọi thứ tùy thuộc vào nó là một lựa chọn tồi vì bạn có thể 'cần nó trong 10 năm'. Nợ kỹ thuật không thể tránh được bằng mọi giá, chỉ khi chi phí dự kiến ​​sửa chữa sau này lớn hơn chi phí sửa chữa nhất định bây giờ.
Ông Boy

88

Trong số những thứ khác, nó có thể được sử dụng để bảo mật. Nếu bạn có bảng "khách hàng", bạn có thể muốn cung cấp cho tất cả những người bán hàng của bạn quyền truy cập vào các trường tên, địa chỉ, mã zip, v.v., nhưng không phải là credit_card_number. Bạn có thể tạo chế độ xem chỉ bao gồm các cột họ cần truy cập và sau đó cấp cho họ quyền truy cập trên chế độ xem.


hấp dẫn. Bảo mật là một câu trả lời tốt. "Những thứ khác" bạn có trong tâm trí là gì?
Dược sĩ

13
Tôi cho rằng các câu trả lời khác cho câu hỏi này sẽ mô tả "những thứ khác". :-)
Graeme Perrow

Select name, address, zipcode from customersẽ không phục vụ mục đích thay vì creating a view?
PPB

@PranavBilurkar Có, nếu bạn hoàn toàn kiểm soát các truy vấn mà người dùng chạy. Nếu người dùng có khả năng chạy các truy vấn của riêng họ (thông qua một số chương trình SQL tương tác hoặc viết các tập lệnh riêng của họ), họ có thể chạy select * from customerđể cung cấp cho họ quyền truy cập vào mọi thứ. Nếu bạn cấp cho họ quyền truy cập vào chế độ xem chứ không phải bảng, họ không thể truy cập các trường không có trong chế độ xem.
Graeme Perrow

38

Một khung nhìn là sự gói gọn của một truy vấn. Các truy vấn được chuyển thành các chế độ xem có xu hướng phức tạp và việc lưu chúng dưới dạng xem để sử dụng lại có thể là lợi thế.


Vì vậy, bạn sẽ muốn tạo một chế độ xem khi bạn có một truy vấn phức tạp? Làm thế nào phức tạp của một truy vấn, ngưỡng là gì? Bạn có được gì từ việc biến nó thành một cái nhìn?
Dược sĩ

4
Làm thế nào phức tạp là một lựa chọn cá nhân thực sự, không có ngưỡng thiết lập. Bạn thường sử dụng chế độ xem nếu bạn không muốn sao chép logic trong nhiều ứng dụng hoặc các điểm khác nhau trong ứng dụng của mình. Bằng cách làm cho nó một chế độ xem, bạn ẩn logic đó và có thể chia sẻ nó dễ dàng.
Chris Cameron-Mills

1
bạn có thể làm tương tự với một thủ tục được lưu trữ có chọn không? tôi có nghĩ sai về các thủ tục được lưu trữ như một cách để lưu trữ logic truy vấn phức tạp không? các truy vấn phức tạp nên được thực hiện trong chế độ xem thay vì các thủ tục được lưu trữ? Lợi thế của một thủ tục lưu trữ ở đây là gì?
Dược sĩ

2
@MedicineMan - Một thủ tục được lưu trữ trả về một tập kết quả trong khi một khung nhìn thể hiện một bảng ảo cho phép bạn sử dụng như một bảng trong các truy vấn khác.
Andrew Hare

1
Tôi nghĩ rằng điểm này về tập kết quả so với bảng ảo dường như là một điểm chính mà tôi không hiểu.
Dược sĩ

28

Tôi thường tạo các khung nhìn để khử chuẩn hóa và / hoặc tổng hợp dữ liệu thường được sử dụng cho mục đích báo cáo.

BIÊN TẬP

Bằng cách xây dựng, nếu tôi có một cơ sở dữ liệu trong đó một số thực thể là người, công ty, vai trò, loại chủ sở hữu, đơn đặt hàng, chi tiết đơn hàng, địa chỉ và điện thoại, nơi bảng người lưu trữ cả nhân viên và địa chỉ liên hệ và địa chỉ và bảng điện thoại lưu trữ số điện thoại cho cả người và công ty và nhóm phát triển được giao nhiệm vụ tạo báo cáo (hoặc làm cho dữ liệu báo cáo có thể truy cập được đối với người không phải là nhà phát triển), chẳng hạn như bán theo nhân viên, hoặc bán theo khách hàng, bán theo vùng, bán theo tháng , khách hàng theo tiểu bang, v.v. Tôi sẽ tạo ra một tập hợp các khung nhìn không chuẩn hóa các mối quan hệ giữa các thực thể cơ sở dữ liệu để có một chế độ xem tích hợp hơn (không có ý định chơi chữ) của các thực thể trong thế giới thực. Một số lợi ích có thể bao gồm:

  1. Giảm sự dư thừa trong các truy vấn bằng văn bản
  2. Thiết lập một tiêu chuẩn cho các thực thể liên quan
  3. Cung cấp cơ hội để đánh giá và tối đa hóa hiệu suất cho các tính toán và tham gia phức tạp (ví dụ: lập chỉ mục cho các chế độ xem Schemabound trong MSSQL)
  4. Làm cho dữ liệu dễ truy cập và trực quan hơn cho các thành viên trong nhóm và những người không phải là nhà phát triển.

1
bạn có thể xây dựng trên này? Câu trả lời của bạn đang được bình chọn khá nhiều, nhưng tôi không nhận được giá trị mà mọi người khác dường như
MedicineMan

11

Một số lý do: Nếu bạn có các phép nối phức tạp, đôi khi tốt nhất là có một khung nhìn để mọi truy cập sẽ luôn có các phép nối chính xác và các nhà phát triển không phải nhớ tất cả các bảng mà họ có thể cần. Thông thường, điều này có thể dành cho một ứng dụng tài chính trong đó điều cực kỳ quan trọng là tất cả các báo cáo tài chính đều dựa trên cùng một bộ dữ liệu.

Nếu bạn có người dùng mà bạn muốn giới hạn các bản ghi họ có thể nhìn thấy, bạn có thể sử dụng chế độ xem, chỉ cấp cho họ quyền truy cập vào chế độ xem không phải các bảng bên dưới và sau đó truy vấn chế độ xem

Các báo cáo pha lê dường như thích sử dụng các khung nhìn cho các procs được lưu trữ, vì vậy những người viết nhiều báo cáo có xu hướng sử dụng nhiều lượt xem

Lượt xem cũng rất hữu ích khi tái cấu trúc cơ sở dữ liệu. Bạn thường có thể ẩn thay đổi để mã cũ không nhìn thấy nó bằng cách tạo chế độ xem. Đọc trên cơ sở dữ liệu tái cấu trúc để xem cách thức hoạt động của nó vì đây là một cách rất mạnh để tái cấu trúc.


7

Ưu điểm chính của chế độ xem so với quy trình được lưu trữ là bạn có thể sử dụng chế độ xem giống như bạn sử dụng bảng. Cụ thể, một khung nhìn có thể được tham chiếu trực tiếp trong FROMmệnh đề của truy vấn. Ví dụ SELECT * FROM dbo.name_of_view.

Chỉ trong mọi cách khác, các thủ tục được lưu trữ là mạnh mẽ hơn. Bạn có thể vượt qua trong các thông số, bao gồm outcác thông số cho phép bạn có hiệu quả trở lại nhiều giá trị cùng một lúc, bạn có thể làm SELECT, INSERT, UPDATE, và DELETEcác hoạt động, vv vv

Nếu bạn muốn khả năng truy vấn của View trong FROMmệnh đề, nhưng bạn cũng muốn có thể truyền tham số, có một cách để làm điều đó. Nó được gọi là hàm có giá trị bảng.

Đây là một bài viết khá hữu ích về chủ đề này:

http://database.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-dposed-f ghép.html

EDIT: Nhân tiện , loại câu hỏi này đặt ra câu hỏi, một khung nhìn có lợi thế gì so với hàm có giá trị bảng? Tôi không có câu trả lời thực sự tốt cho điều đó, nhưng tôi sẽ lưu ý rằng cú pháp T-SQL để tạo chế độ xem đơn giản hơn so với hàm có giá trị bảng và người dùng cơ sở dữ liệu của bạn có thể quen thuộc hơn với chế độ xem.


+1 vì là một trong số ít câu trả lời để giải quyết vấn đề về các thủ tục được lưu trữ đối với các câu lệnh CHỌN. Bạn có quyền đưa ra vấn đề về chức năng bảng. Về cơ bản, chế độ xem có khả năng hoạt động tốt hơn các chức năng vì chúng có chung động cơ. Có một chi phí chung (ít nhất là trong Oracle) phải được thanh toán khi chuyển từ SQL sang SQL theo phương thức (ví dụ PL / SQL). Nhưng tất cả những thứ khác - bảo mật, đóng gói, v.v. - áp dụng như nhau cho các thủ tục hoặc chức năng như đối với các khung nhìn.
APC

Tùy thuộc vào cấu trúc của khung nhìn, một số khung nhìn có thể được lập chỉ mục. Đó là một cải tiến lớn so với các hàm có giá trị bảng.
HLGEM

6

Nó có thể hoạt động như một "người trung gian" tốt giữa ORM và các bảng của bạn.

Thí dụ:

Chúng tôi đã có một bảng Person mà chúng tôi cần để thay đổi cấu trúc trên đó để cột someColumn sẽ được chuyển sang một bảng khác và sẽ có mối quan hệ với nhiều người.

Tuy nhiên, phần lớn hệ thống, liên quan đến Người, vẫn sử dụng someColumn như một thứ duy nhất, không nhiều thứ. Chúng tôi đã sử dụng một khung nhìn để kết hợp tất cả một số thành viên lại với nhau và đưa nó vào chế độ xem, hoạt động độc đáo.

Điều này hoạt động vì lớp dữ liệu đã thay đổi, nhưng yêu cầu kinh doanh không thay đổi về cơ bản, vì vậy các đối tượng kinh doanh không cần phải thay đổi. Nếu các đối tượng kinh doanh phải thay đổi, tôi không nghĩ rằng đây sẽ là một giải pháp khả thi, nhưng quan điểm chắc chắn hoạt động như một điểm giữa tốt.


1
hấp dẫn. Trong trường hợp của bạn, nó gần giống như một giao diện cho các bảng.
Dược sĩ

5

Để tập trung vào Chế độ xem dữ liệu cụ thể cho phép người dùng tập trung vào dữ liệu cụ thể mà họ quan tâm và vào các nhiệm vụ cụ thể mà họ chịu trách nhiệm. Dữ liệu không cần thiết có thể bị bỏ ngoài tầm nhìn. Điều này cũng làm tăng tính bảo mật của dữ liệu vì người dùng chỉ có thể thấy dữ liệu được xác định trong dạng xem chứ không phải dữ liệu trong bảng bên dưới. Để biết thêm thông tin về việc sử dụng chế độ xem cho mục đích bảo mật, hãy xem Sử dụng Chế độ xem làm Cơ chế bảo mật.

Để đơn giản hóa Chế độ xem thao tác dữ liệu có thể đơn giản hóa cách người dùng thao tác dữ liệu. Bạn có thể xác định các phép nối, phép chiếu, truy vấn UNION và truy vấn CHỌN được sử dụng thường xuyên dưới dạng chế độ xem để người dùng không phải chỉ định tất cả các điều kiện và trình độ mỗi khi thực hiện một thao tác bổ sung trên dữ liệu đó. Ví dụ: một truy vấn phức tạp được sử dụng cho mục đích báo cáo và thực hiện các truy vấn con, tham gia ngoài và tổng hợp để truy xuất dữ liệu từ một nhóm các bảng có thể được tạo dưới dạng xem. Khung nhìn đơn giản hóa việc truy cập dữ liệu vì truy vấn cơ bản không phải viết hoặc gửi mỗi khi báo cáo được tạo; quan điểm được truy vấn thay thế. Để biết thêm thông tin về thao tác dữ liệu.

Bạn cũng có thể tạo các hàm do người dùng xác định nội tuyến hoạt động hợp lý dưới dạng các khung nhìn được tham số hóa hoặc các khung nhìn có các tham số trong các điều kiện tìm kiếm mệnh đề WHERE. Để biết thêm thông tin, hãy xem Inline Hàm do người dùng xác định.

Để Tùy chỉnh Chế độ xem dữ liệu cho phép người dùng khác nhau xem dữ liệu theo các cách khác nhau, ngay cả khi họ đang sử dụng cùng một dữ liệu. Điều này đặc biệt thuận lợi khi người dùng có nhiều sở thích và trình độ kỹ năng khác nhau chia sẻ cùng một cơ sở dữ liệu. Ví dụ: một chế độ xem có thể được tạo để chỉ truy xuất dữ liệu cho các khách hàng mà người quản lý tài khoản giao dịch. Chế độ xem có thể xác định dữ liệu nào cần truy xuất dựa trên ID đăng nhập của người quản lý tài khoản sử dụng chế độ xem.

Để xuất và nhập dữ liệu Chế độ xem có thể được sử dụng để xuất dữ liệu sang các ứng dụng khác. Ví dụ: bạn có thể muốn sử dụng các cửa hàng và bảng bán hàng trong cơ sở dữ liệu quán rượu để phân tích dữ liệu bán hàng bằng Microsoft® Excel. Để làm điều này, bạn có thể tạo chế độ xem dựa trên các cửa hàng và bảng bán hàng. Sau đó, bạn có thể sử dụng tiện ích bcp để xuất dữ liệu được xác định bởi chế độ xem. Dữ liệu cũng có thể được nhập vào các chế độ xem nhất định từ các tệp dữ liệu bằng tiện ích bcp hoặc câu lệnh BULK INSERT với điều kiện các hàng có thể được chèn vào dạng xem bằng cách sử dụng câu lệnh INSERT. Để biết thêm thông tin về các hạn chế sao chép dữ liệu vào chế độ xem, xem INSERT. Để biết thêm thông tin về việc sử dụng tiện ích bcp và câu lệnh BULK INSERT để sao chép dữ liệu đến và từ chế độ xem, hãy xem Sao chép vào hoặc Từ chế độ xem.

Để kết hợp dữ liệu được phân vùng Toán tử tập hợp Transact-SQL UNION có thể được sử dụng trong một khung nhìn để kết hợp các kết quả của hai hoặc nhiều truy vấn từ các bảng riêng biệt thành một tập kết quả duy nhất. Điều này xuất hiện cho người dùng dưới dạng một bảng duy nhất được gọi là chế độ xem được phân vùng. Ví dụ: nếu một bảng chứa dữ liệu bán hàng cho Washington và một bảng khác chứa dữ liệu bán hàng cho California, một chế độ xem có thể được tạo từ UNION của các bảng đó. Khung nhìn thể hiện dữ liệu bán hàng cho cả hai khu vực. Để sử dụng các khung nhìn được phân vùng, bạn tạo một số bảng giống hệt nhau, chỉ định một ràng buộc để xác định phạm vi dữ liệu có thể được thêm vào mỗi bảng. Khung nhìn sau đó được tạo bằng các bảng cơ sở này. Khi chế độ xem được truy vấn, SQL Server sẽ tự động xác định bảng nào bị ảnh hưởng bởi truy vấn và chỉ tham chiếu các bảng đó. Ví dụ, nếu một truy vấn chỉ định rằng chỉ yêu cầu dữ liệu bán hàng cho tiểu bang Washington, SQL Server chỉ đọc bảng chứa dữ liệu bán hàng của Washington; không có bảng khác được truy cập.

Các khung nhìn được phân vùng có thể dựa trên dữ liệu từ nhiều nguồn không đồng nhất, chẳng hạn như các máy chủ từ xa, không chỉ các bảng trong cùng một cơ sở dữ liệu. Ví dụ: để kết hợp dữ liệu từ các máy chủ từ xa khác nhau, mỗi máy chủ lưu trữ dữ liệu cho một khu vực khác nhau trong tổ chức của bạn, bạn có thể tạo các truy vấn phân tán truy xuất dữ liệu từ mỗi nguồn dữ liệu, sau đó tạo chế độ xem dựa trên các truy vấn phân tán đó. Mọi truy vấn chỉ đọc dữ liệu từ các bảng trên các máy chủ từ xa có chứa dữ liệu được yêu cầu truy vấn; các máy chủ khác được tham chiếu bởi các truy vấn phân tán trong dạng xem không được truy cập.

Khi bạn phân vùng dữ liệu trên nhiều bảng hoặc nhiều máy chủ, các truy vấn chỉ truy cập một phần dữ liệu có thể chạy nhanh hơn vì có ít dữ liệu để quét. Nếu các bảng được đặt trên các máy chủ khác nhau hoặc trên một máy tính có nhiều bộ xử lý, mỗi bảng có liên quan đến truy vấn cũng có thể được quét song song, do đó cải thiện hiệu năng truy vấn. Ngoài ra, các tác vụ bảo trì, chẳng hạn như xây dựng lại các chỉ mục hoặc sao lưu bảng, có thể thực thi nhanh hơn. Bằng cách sử dụng chế độ xem được phân vùng, dữ liệu vẫn xuất hiện dưới dạng một bảng duy nhất và có thể được truy vấn như vậy mà không cần phải tham chiếu bảng bên dưới chính xác theo cách thủ công.

Các khung nhìn được phân vùng có thể cập nhật được nếu một trong hai điều kiện này được đáp ứng: Trình kích hoạt INSTEAD OF được xác định trên khung nhìn với logic để hỗ trợ các câu lệnh INSERT, UPDATE và DELETE.

Cả hai khung nhìn và các câu lệnh INSERT, UPDATE và DELETE đều tuân theo các quy tắc được xác định cho các khung nhìn được phân vùng cập nhật. Để biết thêm thông tin, hãy xem Tạo Chế độ xem được phân vùng.

https://technet.microsoft.com/en-us/l Library / aa214282 (v = sql.80) .aspx # sql: join


5

Đây là hai lý do phổ biến:

Bạn có thể sử dụng nó để bảo mật. Cấp không có quyền trên bảng chính và tạo các chế độ xem giới hạn quyền truy cập cột hoặc hàng và cấp quyền cho người dùng để xem chế độ xem.

Bạn có thể sử dụng nó cho thuận tiện. Tham gia cùng nhau một số bảng mà bạn sử dụng cùng nhau mọi lúc trong chế độ xem. Điều này có thể làm cho các truy vấn phù hợp và dễ dàng hơn.


3

Có nhiều hơn một lý do để làm điều này. Đôi khi làm cho các truy vấn nối chung trở nên dễ dàng vì người ta chỉ có thể truy vấn tên bảng thay vì thực hiện tất cả các phép nối.

Một lý do khác là để giới hạn dữ liệu cho những người dùng khác nhau. Ví dụ:

Bảng 1: Colums - USER_ID; USERNAME; SSN

Người dùng quản trị viên có thể có quyền riêng tư trên bảng thực tế, nhưng người dùng mà bạn không muốn có quyền truy cập để nói SSN, bạn tạo chế độ xem như

TẠO XEM XEM HOA K AS NHƯ CHỌN user_id, tên người dùng TỪ Bảng1;

Sau đó cung cấp cho họ quyền riêng tư để truy cập vào xem và không phải bảng.


2

Lượt xem có thể là một ơn trời khi thực hiện báo cáo trên cơ sở dữ liệu cũ. Cụ thể, bạn có thể sử dụng tên bảng nhạy cảm thay vì tên 5 chữ cái khó hiểu (trong đó 2 trong số đó là tiền tố phổ biến!) Hoặc tên cột có đầy đủ các chữ viết tắt mà tôi chắc chắn có ý nghĩa vào thời điểm đó.


2

Nói chung, tôi đi với các chế độ xem để làm cho cuộc sống dễ dàng hơn, nhận các chi tiết mở rộng từ một số thực thể được lưu trữ trên nhiều bảng (loại bỏ nhiều liên kết trong mã để tăng cường khả năng đọc) và đôi khi để chia sẻ dữ liệu qua nhiều cơ sở dữ liệu hoặc thậm chí để chèn dễ đọc hơn.


2

Dưới đây là cách sử dụng Chế độ xem cùng với quyền để giới hạn các cột mà người dùng có thể cập nhật trong bảng.

/* This creates the view, limiting user to only 2 columns from MyTestTable */
CREATE VIEW dbo.myTESTview 
WITH SCHEMABINDING AS
SELECT ID, Quantity FROM dbo.MyTestTable;

/* This uses the view to execute an update on the table MyTestTable */
UPDATE dbo.myTESTview
SET Quantity = 7
WHERE ID = 1

1

Khi tôi muốn xem ảnh chụp nhanh của (các) bảng và / hoặc chế độ xem (theo cách chỉ đọc)


1
bạn có ý nghĩa gì với một 'ảnh chụp nhanh của bảng'? Khi nào hoặc tại sao bạn muốn làm điều đó?
Dược sĩ

Có nhiều kịch bản; nói rằng bạn muốn chạy một truy vấn / cửa hàng ưu tiên phức tạp trên một bảng mà không ảnh hưởng và gạch chân bảng. Bạn tạo chế độ xem (một đại diện chỉ đọc)
violomzzz

vì vậy nếu bạn muốn chạy một thủ tục lưu trữ truy vấn phức tạp, bạn không thể truy cập vào chế độ xem theo kiểu chỉ đọc? Tôi thực sự không có trải nghiệm cơ sở dữ liệu để 'hiểu' những gì bạn đang nói ở đây. Bạn có thể xây dựng hoặc cung cấp một ví dụ chi tiết?
Dược sĩ

1

Tôi thích sử dụng lượt xem trên các thủ tục được lưu trữ khi tôi chỉ chạy một truy vấn. Các khung nhìn cũng có thể đơn giản hóa bảo mật, có thể được sử dụng để dễ dàng chèn / cập nhật vào nhiều bảng và có thể được sử dụng để chụp nhanh / cụ thể hóa dữ liệu (chạy truy vấn dài và giữ kết quả được lưu trong bộ nhớ cache).

Tôi đã sử dụng các chế độ xem cụ thể để chạy các truy vấn khao khát không bắt buộc phải được giữ chính xác trong thời gian thực.


khi bạn đang chạy một truy vấn trái ngược với? Tại sao? Điểm này không thực sự có ý nghĩa
MedicineMan

Khi bạn sử dụng chế độ xem, bạn biết rằng bạn chỉ thực hiện thao tác DML, khi bạn gọi SP bạn không biết điều gì khác có thể xảy ra trước khi bạn nhận được dữ liệu của mình. Tức là gọi một hàm bộ đệm, có thể trả về tập dữ liệu được lưu trong bộ nhớ cache, nhưng điều đó không có nghĩa là bạn nên gọi SP mọi thứ bạn muốn dữ liệu. Nó đơn giản hóa API thành dữ liệu IMO
MattH

1

Lượt xem cũng chia nhỏ cấu hình và bảng rất phức tạp thành các phần có thể quản lý dễ dàng truy vấn. Trong cơ sở dữ liệu của chúng tôi, toàn bộ hệ thống quản lý bảng của chúng tôi được chia thành các chế độ xem từ một bảng lớn.


1

Điều này không trả lời chính xác câu hỏi của bạn nhưng tôi nghĩ rằng nó đáng để đề cập đến Quan điểm cụ thể hóa . Kinh nghiệm của tôi chủ yếu là với Oracle nhưng được cho là SQL-Server khá giống nhau.

Chúng tôi đã sử dụng một cái gì đó tương tự trong kiến ​​trúc của mình để giải quyết các vấn đề về hiệu suất XML. Các hệ thống của chúng tôi được thiết kế với rất nhiều dữ liệu được lưu trữ dưới dạng XML trên một hàng và các ứng dụng có thể cần truy vấn các giá trị cụ thể trong đó. Việc xử lý nhiều XMLTypes và chạy XPath trên một số lượng lớn các hàng có ảnh hưởng lớn đến hiệu suất, vì vậy chúng tôi sử dụng một dạng các khung nhìn cụ thể hóa để trích xuất các nút XML mong muốn vào bảng quan hệ bất cứ khi nào bảng cơ sở thay đổi. Điều này thực sự cung cấp một ảnh chụp nhanh vật lý của truy vấn tại một thời điểm trái ngược với các chế độ xem tiêu chuẩn sẽ chạy truy vấn của họ theo yêu cầu.


1

Tôi thấy một thủ tục được lưu trữ nhiều hơn như một phương thức tôi có thể gọi đối với dữ liệu của mình, trong khi đó, một khung nhìn cung cấp một cơ chế để tạo một phiên bản tổng hợp của dữ liệu cơ sở dựa trên những truy vấn hoặc thủ tục được lưu trữ nào có thể được tạo. Tôi sẽ tạo một chế độ xem khi đơn giản hóa hoặc tổng hợp có ý nghĩa. Tôi sẽ viết một thủ tục được lưu trữ khi tôi muốn cung cấp một dịch vụ rất cụ thể.


bạn có thể cho ví dụ về các dịch vụ nhỏ
MedicineMan

1

Một điều gây tò mò về các khung nhìn là Microsoft Access nhìn thấy chúng dưới dạng bảng: khi bạn đính kèm giao diện Microsoft Access vào cơ sở dữ liệu SQL bằng ODBC, bạn sẽ thấy các bảng và dạng xem trong danh sách các bảng có sẵn. Vì vậy, nếu bạn đang chuẩn bị các báo cáo phức tạp trong MS Access, bạn có thể để máy chủ SQL thực hiện việc tham gia và truy vấn và đơn giản hóa rất nhiều cuộc sống của bạn. Ditto để chuẩn bị một truy vấn trong MS Excel.


1

Tôi chỉ có 10 lượt xem trong cơ sở dữ liệu sản xuất của mình. Tôi sử dụng một số cho các cột tôi sử dụng tất cả các thời gian. Một bộ tôi sử dụng đến từ 7 bảng, một số có các phép nối ngoài và thay vì viết lại liên tục, tôi chỉ phải gọi chế độ xem đó trong một lựa chọn và thực hiện một hoặc 2 phép nối. Đối với tôi nó chỉ là một tiết kiệm thời gian.


Xin lỗi tôi nếu điều này nằm ngoài phạm vi của câu hỏi, nhưng một số người đã đề cập đến điều này-- bạn không phải chịu một số hình phạt về hiệu suất khi làm điều này?
Dược sĩ

Không có gì. Trình tối ưu hóa SQL Server hiển thị chính xác cùng một kế hoạch để chọn * từ chế độ xem như đối với các phép nối SQL tương đương với chế độ xem
Brian Spencer

1

Tôi đang tạo xxx để ánh xạ tất cả các mối quan hệ giữa một bảng chính (như bảng Sản phẩm) và các bảng tham chiếu (như ProductType hoặc ProductDescripByL Language). Điều này sẽ tạo ra một chế độ xem cho phép tôi truy xuất một sản phẩm và tất cả các chi tiết được dịch từ khóa ngoại của nó sang mô tả của nó. Sau đó, tôi có thể sử dụng ORM để tạo các đối tượng để dễ dàng xây dựng lưới, hộp tổ hợp, v.v.


0

Hãy nghĩ về nó như tái cấu trúc lược đồ cơ sở dữ liệu của bạn.


0

Tôi nghĩ rằng đầu tiên. Để che giấu sự phức tạp của Truy vấn. Nó rất thích hợp cho các khung nhìn. Làm thế nào khi chúng ta bình thường hóa các bảng Cơ sở dữ liệu tăng lên. Làm thế nào để tìm nạp dữ liệu rất khó khăn khi số lượng bảng tăng lên. Cách tốt nhất để xử lý là theo dõi các khung nhìn. Nếu tôi sai chính xác.


Nếu bạn google nó, bạn sẽ có một thông tin rất rõ ràng cho câu hỏi này.
Chella

0

Chúng tôi tạo chế độ xem để giới hạn hoặc kiểm tra lại việc truy cập tất cả các hàng / cột trong một bảng. Nếu chủ sở hữu muốn chỉ các hàng / cột cụ thể hoặc giới hạn cần được chia sẻ, thì anh ta sẽ tạo chế độ xem với các cột đó.


Đây chỉ là một lý do tại sao bạn nên / có thể sử dụng chế độ xem.
Alexander

0

Để bảo mật: Cung cấp cho mỗi người dùng quyền truy cập cơ sở dữ liệu chỉ thông qua một nhóm chế độ xem nhỏ chứa dữ liệu cụ thể mà người dùng hoặc nhóm người dùng được phép xem, hạn chế quyền truy cập của người dùng vào dữ liệu khác.

Đơn giản cho các truy vấn và cấu trúc : Một khung nhìn có thể vẽ dữ liệu từ một số bảng và trình bày một bảng duy nhất, đơn giản hóa thông tin và biến các truy vấn nhiều bảng thành các truy vấn một bảng để xem và cung cấp cho người dùng chế độ xem cụ thể về cấu trúc cơ sở dữ liệu cơ sở dữ liệu dưới dạng tập hợp các bảng ảo dành riêng cho người dùng hoặc nhóm người dùng cụ thể.

Để tạo cấu trúc cơ sở dữ liệu nhất quán : Các khung nhìn thể hiện một hình ảnh nhất quán, không thay đổi của cấu trúc cơ sở dữ liệu, ngay cả khi các bảng nguồn cơ bản được thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.