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只是连接记录的键,所以它不知道它们应该具有什么值。在真实的数据库中,您可能会以任何方式使用序列,所以为什么不使用它们来生成样本数据呢?