2014-10-29 24 views
8

Tôi có mã này trong PostgreSQLMySQL có hỗ trợ kế thừa bảng không?

CREATE TABLE first (
    id serial, 
    primary key(id) 
); 

CREATE TABLE second (primary key(id)) INHERITS (first); 

Mã tương đương cho MySQL là gì?

+0

MySQL không có thừa kế như PostgreSQL. –

Trả lời

6

MySQL không hỗ trợ kế thừa bảng. Cách duy nhất để gần đúng các chức năng là bằng cách sử dụng một chìa khóa nước ngoài (mà MySQL là không quá tốt ở hai):

CREATE TABLE first (
    id serial, 
    PRIMARY KEY (id) 
); 

CREATE TABLE second (
    parent integer REFERENCES first, 
    PRIMARY KEY (parent) 
); 

Rõ ràng, bạn sẽ phải thay đổi bất kỳ quan điểm và truy vấn từ PostgreSQL "phiên bản thừa kế "để truy vấn nhiều mối quan hệ thông thường.

+0

là có một lý do cụ thể (như hiệu suất liên quan) mà MySQL không hỗ trợ nó? – sajadkk

+0

@sajadkk Tôi không biết về các vấn đề hiệu suất với thừa kế, nhưng nó là một khái niệm tương đối mới và vẫn còn một số thiếu sót thực hiện. Việc thừa kế PostgreSQL không tương thích với SQL, và không phải tất cả các ràng buộc đều được kế thừa vì vậy người ta phải thực sự cẩn thận khi làm việc với thừa kế. (MySQL, tình cờ, ít tuân thủ chuẩn SQL hơn PostgreSQL, mặc dù gần đây tôi chưa kiểm tra các cải tiến.) Trừ khi bạn * thực sự * cần thừa kế cho một số lý do mô hình dữ liệu bạn có lẽ tốt hơn với cấu trúc quan hệ tiêu chuẩn. – Patrick

+2

"* nhưng nó là một khái niệm tương đối mới *" - đó là thực sự không đúng sự thật. Các khái niệm quan hệ đối tượng đi ngược trở lại vào số –

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