使用什么:主键,外键或唯一键?

时间:2018-09-18 22:25:58

标签: oracle database-design

因此,我尝试使用已创建的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
);

这些是需要创建的表,谁是主键,谁是外部引用?或者其中之一应该是唯一的?

编辑:我在评论上链接了图像。

1 个答案:

答案 0 :(得分:0)

这就是我要做的,只需查看列名(这是自我描述的)即可。我还注释掉了多余或错误的代码片段(例如ESCREVE表中的数据类型)。

   head(merge1)
        Player GP PIM       TOI  Rk Age  Pos   Tm  G  A PTS X... EV PP SH GW EV.1 PP.1 SH.1   S  S.  ATOI BLK HIT FOW FOL  FO.  PS  X Team
1   A.J. Greer 17  29  126.0000 315  21   LW  COL  0  3   3    2  0  0  0  0    3    0    0  13 0.0  7:24   5  30   1   2 33.3 0.2 NA <NA>
2   A.J. Greer 17  29  125.6833  NA  NA <NA> <NA> NA NA  NA   NA NA NA NA NA   NA   NA   NA  NA  NA  <NA>  NA  NA  NA  NA   NA  NA NA  COL
3 Aaron Ekblad 82  71 1918.0000 227  21    D  FLA 16 22  38    9 11  5  0  4   16    6    0 189 8.5 23:23 121  69   0   0   NA 7.8 NA <NA>
4 Aaron Ekblad 82  71 1917.9000  NA  NA <NA> <NA> NA NA  NA   NA NA NA NA NA   NA   NA   NA  NA  NA  <NA>  NA  NA  NA  NA   NA  NA NA  FLA

merge1 <- left_join(hockey_ref, nst, by = c("Player"="Player"))