Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在维护表关系/约束的同时自动生成测试数据_Java_Sql_Oracle_Testing_Oracle11g - Fatal编程技术网

Java 在维护表关系/约束的同时自动生成测试数据

Java 在维护表关系/约束的同时自动生成测试数据,java,sql,oracle,testing,oracle11g,Java,Sql,Oracle,Testing,Oracle11g,鉴于以下两个表格: 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 (

鉴于以下两个表格:

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\u book.author\u id是author.author\u id的外键,表示一个作者可以发布多本书。 如何为这两个表生成测试数据。我想在两个表上生成测试数据,例如AUTHOR中的1000行和AUTHOR\u BOOK中的2500行

我正在努力解决的问题是,在自动生成AUTHOR_书籍的内容时,链接AUTHOR表主键的最简单方法是什么

对于具有一对多关系的表,可以使用哪些方法自动生成测试数据?我对Java、PL/SQL或纯SQL的解决方案特别感兴趣


提前谢谢

您很可能会使用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);

您的意思是手动创建insert语句吗?我在考虑一种类似于使用DBMS_RANDOM的解决方案,但我不知道在动态生成数据时如何强制执行引用完整性。您可以使用DBMS_RANDOM使“其他列”具有不同的业务值。ID只是连接记录的键,所以它不知道它们应该具有什么值。在真实的数据库中,您可能会以任何方式使用序列,所以为什么不使用它们来生成样本数据呢?