所以我尝试使用已经创建的TABLE上传DER方案,但似乎我需要升级,所以。
我想弄清楚在行上使用哪个(PK / FK / UQ)CONSTRAINT。 DER计划没有指出这一点,因为我是一个完整的SQL假人,我回到了问题:
CREATE TABLE autor
(
aut_matricula NUMBER (6),
aut_nome VARCHAR2 (50) CONSTRAINT autor_aut_nome NOT NULL,
aut_cpf NUMBER (11) CONSTRAINT autor_aut_cpf_nn NOT NULL,
aut_dtnasc DATE CONSTRAINT autor_aut_dtnasc_nn NOT NULL,
aut_nacionalidade VARCHAR2 (50)
CONSTRAINT autor_aut_nacionalidade_nn NOT NULL
);
CREATE TABLE livro
(
liv_codigo NUMBER (6) CONSTRAINT livro_liv_codigo_nn NOT NULL,
liv_titulo VARCHAR2 (50) CONSTRAINT livro_liv_titulo_nn NOT NULL,
liv_preco NUMBER (5, 2) CONSTRAINT livro_liv_preco_nn NOT NULL,
liv_lancamento DATE CONSTRAINT livro_liv_lancamento_nn NOT NULL,
edi_codigo NUMBER (6) CONSTRAINT livro_edi_codigo_nn NOT NULL,
ass_sigla CHAR (3) CONSTRAINT livro_ass_sigla_nn NOT NULL
);
CREATE TABLE escreve
(
liv_codigo NUMBER (1) CONSTRAINT escreve_liv_codigo_nn NOT NULL,
aut_matricula NUMBER (1) CONSTRAINT escreve_aut_matricula_nn NOT NULL
);
CREATE TABLE assunto
(
ass_sigla CHAR (3) CONSTRAINT assunto_ass_sigla_nn NOT NULL,
ass_descricao VARCHAR2 (50) CONSTRAINT assunto_ass_descricao_nn NOT NULL
);
CREATE TABLE editora
(
edi_codigo NUMBER (1) CONSTRAINT editora_edi_codigo_nn NOT NULL,
edi_nome VARCHAR2 (50) CONSTRAINT editora_edi_nome_nn NOT NULL
);
这些是需要创建的表,谁是PRIMARY KEY以及谁是外国参考?或者其中一个应该是独一无二的?
编辑:我在评论中链接了图像。
这就是我如何做到这一点,只需查看列名(相当自我描述)。我还评论了你的代码片段,这些片段变得多余或错误(例如ESCREVE表中的数据类型)。
SQL> CREATE TABLE assunto
2 (
3 ass_sigla CHAR (3) CONSTRAINT pk_ass PRIMARY KEY,
4 -- removed by LF assunto_ass_sigla_nn NOT NULL
5 ass_descricao VARCHAR2 (50) CONSTRAINT assunto_ass_descricao_nn NOT NULL
6 );
Table created.
SQL>
SQL> CREATE TABLE editora
2 (
3 edi_codigo NUMBER (1) CONSTRAINT pk_editora PRIMARY KEY,
4 -- removed by LF editora_edi_codigo_nn NOT NULL
5 edi_nome VARCHAR2 (50) CONSTRAINT editora_edi_nome_nn NOT NULL
6 );
Table created.
SQL>
SQL> CREATE TABLE autor
2 (
3 aut_matricula NUMBER (6) CONSTRAINT pk_aut PRIMARY KEY,
4 aut_nome VARCHAR2 (50) CONSTRAINT autor_aut_nome NOT NULL,
5 aut_cpf NUMBER (11) CONSTRAINT autor_aut_cpf_nn NOT NULL,
6 aut_dtnasc DATE CONSTRAINT autor_aut_dtnasc_nn NOT NULL,
7 aut_nacionalidade VARCHAR2 (50)
8 CONSTRAINT autor_aut_nacionalidade_nn NOT NULL
9 );
Table created.
SQL>
SQL> CREATE TABLE livro
2 (
3 liv_codigo NUMBER (6) CONSTRAINT pk_liv PRIMARY KEY,
4 -- removed by LF livro_liv_codigo_nn NOT NULL,
5 liv_titulo VARCHAR2 (50) CONSTRAINT livro_liv_titulo_nn NOT NULL,
6 liv_preco NUMBER (5, 2) CONSTRAINT livro_liv_preco_nn NOT NULL,
7 liv_lancamento DATE CONSTRAINT livro_liv_lancamento_nn NOT NULL,
8 edi_codigo NUMBER (6)
9 CONSTRAINT fk_liv_edi REFERENCES editora (edi_codigo)
10 NOT NULL,
11 -- removed by LF livro_edi_codigo_nn NOT NULL
12 ass_sigla CHAR (3)
13 CONSTRAINT fk_liv_ass REFERENCES assunto (ass_sigla)
14 NOT NULL
15 -- removed by LFlivro_ass_sigla_nn NOT NULL
16 );
Table created.
SQL>
SQL> CREATE TABLE escreve
2 (
3 liv_codigo NUMBER (6)
4 CONSTRAINT fk_esc_liv REFERENCES livro (liv_codigo),
5 -- removed by LF NUMBER (1) CONSTRAINT escreve_liv_codigo_nn NOT NULL,
6 aut_matricula NUMBER (6)
7 CONSTRAINT fk_esc_aut REFERENCES autor (aut_matricula),
8 -- removed by LF NUMBER (1) CONSTRAINT escreve_aut_matricula_nn NOT NULL
9 CONSTRAINT pk_esc PRIMARY KEY (liv_codigo, aut_matricula)
10 );
Table created.
SQL>