2010-03-18 77 views
7

Tôi muốn thêm thuộc tính tùy chỉnh vào bảng MySQL mà tôi có thể đọc qua php.Thêm thuộc tính siêu dữ liệu vào bảng MySQL

Các thuộc tính này không được can thiệp vào chính bảng - chúng chủ yếu được truy cập bằng mã php trong thời gian tạo mã và các thuộc tính này phải nằm trong chính bản thân DB.

Khái niệm tương tự về phản ánh .NET.

MySQL có hỗ trợ bất cứ điều gì như thế này không?

Cảm ơn.

Trả lời

5

Khi bạn CREATE hoặc ALTER một bảng, bạn có thể thêm COMMENTS - một cho toàn bộ và một cho mỗi cột. Để truy xuất các nhận xét này, bạn có thể truy vấn cơ sở dữ liệu INFORMATION_SCHEMA, cụ thể là các cột INFORMATION_SCHEMA.COLUMNS.COLUMNS_COMMENTINFORMATION_SCHEMA.TABLE.TABLE_COMMENTS. INFORMATION_SCHEMA cung cấp nhiều siêu dữ liệu về cơ sở dữ liệu của bạn, bao gồm dữ liệu được cung cấp bởi các câu lệnh DESCRIBE. Bất kỳ người dùng nào đã đọc quyền truy cập vào một bảng hoặc cột nhất định có thể đọc siêu dữ liệu tương ứng từ INFORMATION_SCHEMA, nhưng không thể đọc siêu dữ liệu về các bảng mà họ không có quyền truy cập đọc.

Có vẻ tự nhiên để lưu trữ siêu dữ liệu tùy chỉnh của bạn ở INFORMATION_SCHEMA, nhưng không linh hoạt như bạn có thể cần vì bạn chỉ có thể lưu trữ COMMENT mỗi cột. Nếu điều này là hạn chế cho mục đích của bạn hoặc bạn cần cập nhật dữ liệu thường xuyên, bạn nên làm theo @Dark Falcon và tạo một bảng bổ sung.

1

Loại thuộc tính nào? Vì bạn đề cập đến sự phản chiếu, tôi cho rằng bạn đang cố tìm ra thứ gì đó về cấu trúc bảng? Bạn có nhận ra rằng các lệnh cho bạn biết về cấu trúc bảng là SQL và trả lại kết quả của chúng như bất kỳ truy vấn nào khác không? Điều này cho phép bạn xử lý một cách progammatically kết quả của, ví dụ, DESCRIBE TABLE. Đây có phải là những gì bạn đang tìm kiếm không?

+0

Tôi muốn thêm thông tin của riêng mình vào danh sách mà DESCRIBE TABLE trả về. Thuộc tính CUSTOM của riêng tôi. – Jack

+0

Dài và ngắn của nó là khá nhiều: "Bạn không thể". Giữ một bảng riêng biệt với các cột cho tên_bảng, field_name, attribute_name, v.v. –

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