2012-06-25 17 views
12

Tại sao những yếu tố này quan trọng, chúng có tác dụng gì trên cơ sở dữ liệu?Biến JPA @Table "danh mục" và biến "lược đồ" được sử dụng để làm gì?

Không phải là "lược đồ" đã được quyết định tại thời điểm đó, vì nó tồn tại trong cơ sở dữ liệu?

Chính xác "danh mục" là gì? Loại biến/đầu vào nào là trường danh mục JPA mong đợi? Ngoài ra, cùng một câu hỏi cho trường "lược đồ".

Trả lời

18

Danh mục và lược đồ là "không gian tên" mà bạn xác định ở phía máy chủ của cơ sở dữ liệu. Một số cơ sở dữ liệu chứa các lược đồ, một số chứa các danh mục, và một số chứa cả hai. Khi đăng nhập với một người dùng cụ thể, một số cơ sở dữ liệu mặc định lược đồ/danh mục đến không gian tên của người dùng, làm cho bảng không hiển thị cho người dùng khác, do đó, gây ra nhu cầu sử dụng không gian tên "chung". Vì vậy, tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng để sao lưu dữ liệu của mình, bạn có thể muốn bỏ qua các cài đặt đó.

Đối với MySQL, bạn có thể muốn bỏ qua các cài đặt đó. Điều này là do phần "cơ sở dữ liệu" của URL JDBC (một sau dấu gạch chéo cuối cùng) trỏ đến tên cơ sở dữ liệu, nghĩa là giống hệt với lược đồ (cho MySQL).

+4

Chỉ cần hoàn thành hình ảnh: trong lược đồ MySQL không được hỗ trợ và bản đồ danh mục vào cơ sở dữ liệu. –

+0

@a_horse_with_no_name: Bạn chắc chắn? Tôi nghĩ nó ngược lại. Nếu bạn chỉ thay thế "cơ sở dữ liệu" bằng "lược đồ" trong các lệnh DDL của MySQL, nó chỉ hoạt động. – jpkrohling

+2

Tôi chắc chắn là có. Ít nhất đó là điều mà trình điều khiển JDBC nói. 'DatabaseMetaData.getCatalogTerm()' trả về "Cơ sở dữ liệu" và 'DatabaseMetaData.getSchemaTerm()' trả về null. Các phương thức 'supportsSchemaInXXX()' khác nhau trả về false và 'supportsCatalogInXXX()' đều trả về true. –

Các vấn đề liên quan