2014-05-21 2 views
0

주어진 다음의 두 테이블을 유지하면서 : 위의 두 테이블 구조에서자동 생성 테스트 데이터 테이블 관계/제약

CREATE TABLE AUTHOR 
    (
    author_id number, 
     author_fname varchar(20), 
     author_lname varchar(20), 
     author_telno varchar(20), 
     author_address varchar(200) 
) 
/

CREATE TABLE AUTHOR_BOOKS 
    (
     author_id_book number, 
     author_id number, 
     boook_name varchar(10), 
     book_publisher varchar(20), 
     published_date DATE, 
     published_country_code varchar(3) 
) 
/

을 author_book.author_id은 저자가 게시 할 수 있음을 의미 author.author_id하는 외래 키 한 권 이상의 책. 두 테이블의 테스트 데이터를 어떻게 생성 할 수 있습니까? 예를 들어 두 테이블 모두에서 테스트 데이터를 생성하려고합니다. AUTHOR에서는 1000 행, AUTHOR_BOOK에서는 2500 행이 필요합니다.

내가 고민하는 영역은 AUTHOR_BOOKS에 대한 콘텐츠를 자동으로 생성하는 동안 AUTHOR 테이블의 기본 키를 연결하는 가장 쉬운 방법은 무엇입니까?

일대 다 관계가있는 테이블의 테스트 데이터를 자동 생성하는 데 사용할 수있는 방법은 무엇입니까? 특히 Java, PL/SQL 또는 단순히 순수한 SQL의 솔루션에 관심이 있습니다.

미리 감사드립니다.

답변

1

대부분의 경우 ORACLE 시퀀스를 사용하여 ID 열을 채 웁니다.

insert into author values (author_seq.nextval, other columns); 
insert into author_books values (book_seq.nextval, author_seq.currval, other columns1); 
insert into author_books values (book_seq.nextval, author_seq.currval, other columns2); 
... 
insert into author values (author_seq.nextval, other columns); 
insert into author_books values (book_seq.nextval, author_seq.currval, other columns3); 
insert into author_books values (book_seq.nextval, author_seq.currval, other columns4); 
+0

가 수동으로 삽입 문을 만드는 뜻 :

는 그런 다음 시드 스크립트에서, 당신은 이런 식으로 뭔가를 생성 할 것인가? 나는 DBMS_RANDOM의 사용과 비슷한 솔루션을 더 생각하고 있었지만 동적으로 데이터를 생성 할 때 참조 무결성을 적용하는 방법을 이해하지 못했습니다. – ziggy

+0

"다른 열"에 다른 비즈니스 값을 갖는 dbms_random을 사용할 수 있습니다. ID는 레코드 연결 키일 뿐이므로 어떤 값을 가져야하는지 알지 못합니다. 실제 데이터베이스에서는 어떤 방식 으로든 시퀀스를 사용하므로 예제 데이터를 생성하는 데 사용하지 않는 것이 어떻습니까? – vav