如何停止冗余

时间:2017-04-20 00:43:11

标签: sql sqlite

这是我的小SQL表,其中包含续集的电影:

CREATE TABLE "films" 
(
    "title" TEXT NOT NULL,
    "year" INTEGER NOT NULL,
    "predecessor_title" TEXT NOT NULL,
    "predecessor_year" INTEGER NOT NULL,
    "increase" NUMERIC NOT NULL
)

以下是我的一些价值观:

Toy Story 2 1999 Toy Story 1995 28%    
Toy Story 3 2010 Toy Story 2 1999 69%

如您所见,这有点多余。玩具总动员2作为标题和前任出现。如何创建一个没有这个的表?

2 个答案:

答案 0 :(得分:2)

你可以:

---run procedure

SET SERVEROUTPUT ON;

begin
  procedure_name(param1);
end;

---procedure output

anonymous block completed

sample procedure_name output

ID是主键。

PREDECESSOR_ID是前任电影的ID。可以为null,因为该系列的第一部电影没有前任。

增加是增加。可以为null,因为第一部电影没有增加。

答案 1 :(得分:1)

当你使用ORM(Hibernate)工具设计它时:

@Entity
public class Films{
@ID
@GeneratedValue
int id;

@NotNull
String titleText;

@NotNull
Integer year;

@JoinColumn
Film film;

Integer increase;

}
这看起来很酷。在这里你可以在Film film;中保留前任的参考号,不管,如果没有前任那么重要。那就是null。