sql - 如何停止冗余

标签 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
)

以下是我的一些值(value)观:
Toy Story 2 1999 Toy Story 1995 28%    
Toy Story 3 2010 Toy Story 2 1999 69%

如您所见,它有些多余。玩具总动员 2 既作为标题又作为前身出现。我怎样才能创建一个没有这个的表?

最佳答案

你可以:

CREATE TABLE FILMS (
    ID INTEGER NOT NULL PRIMARY KEY
    TITLE TEXT NOT NULL,
    YEAR INTEGER NOT NULL,
    PREDECESSOR_ID INTEGER,
    INCREASE NUMERIC
)

ID 是主键。

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

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

关于sql - 如何停止冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43508350/

相关文章:

ios - 如何在sqlite数据库的表行中添加NSDictionary

cakephp - CakePHP和SQLite: fatal error :在非对象上调用成员函数query()

java - 什么是 'Class.forName("org.sqlite.JDBC");'做?

sql - 防止 SQL Server 中的死锁

SQL 操作顺序

sql - 降低查询计划中表值函数 - XML Reader 的成本 - 如何?

java - 选择日期时间列为特定日期的行

sql - 将日期格式化为 yyyy-mm-dd hh :mm:ss. 000

C#仅使用linq显示小数点后的数字

android - 如何在android中将项目添加到自定义数组列表中